[Golang]構造体のバイナリ化ができなかった

お世話になっております。
しゃまとんです。

Goで構造体をバイナリ化したいなぁと思って、調べてやってみていたのですが中々うまくいかない・・・ということがあったのでメモ。

まず、単純にバイナリ化をするためには下記のような記述をすれば出来ます。

go runすると、こんな感じですね。

これを開発中のコードで試していたのですが、変換エラーが出てしまい困っていのたですが、どうやらFixed Typeでないとダメであるということがわかりました。

簡単なところでいうと、スライスだったらstringだったりは決まった長さではないため、変換時にエラーにされてしまうようです。

自分の場合は、stringがどうやら原因だったようでできるものだと思いこんでいたのが、ハマりポイントでした。Unity(C#)だと出来るので、まさかでした。

あと普段Goを書いていると使っているintもダメですね。これは環境によって32/64bitが変わるそうなので、変換時にエラーになってしまいます。

どうしてもバイナリで扱いたい場合はシリアライザ等を使ってやるほうが良さそうですね。
以上です。

■ 参考
Go言語でシンプルに構造体⇔バイナリの相互変換
encoding/binary: Write() struct int type no output.