構造体とバイト配列間の Go 変換
Q: Go で構造体とバイト配列の間で C のような型キャストを実行するにはどうすればよいですか?たとえば、受信したネットワーク バイト ストリームを構造体に直接マッピングするにはどうすればよいですか?
A: エンコーディング/バイナリ パッケージは、unsafe のより便利で安全な代替手段を提供します。Pointer:
<code class="go">// Create a struct and write it. type T struct { A uint32 B float64 } t := T{A: 0xEEFFEEFF, B: 3.14} buf := &bytes.Buffer{} err := binary.Write(buf, binary.BigEndian, t) if err != nil { panic(err) } fmt.Println(buf.Bytes()) // Read into an empty struct. t = T{} err = binary.Read(buf, binary.BigEndian, &t) if err != nil { panic(err) } fmt.Printf("%x %f", t.A, t.B)</code>
バイナリ パッケージを利用することで、サイズとエンディアンを自動的に処理し、より安全かつ簡潔な方法で構造体とバイト配列の間で簡単に変換できます。
以上がGo で構造体をバイト配列に、またはその逆に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。