ホームページ  >  記事  >  バックエンド開発  >  Go で構造体をバイト配列に、またはその逆に変換するにはどうすればよいですか?

Go で構造体をバイト配列に、またはその逆に変換するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-27 22:02:02618ブラウズ

 How to Convert Structs to Byte Arrays and Vice Versa in Go?

構造体とバイト配列間の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。