Go でのデータ構造のエンコードとデコード
Go では、送信のためにデータ構造をバイト配列にエンコードおよびデコードする必要があることがよくあります。または保管場所。この記事では、このタスクを効率的かつ堅牢に実行するための手法について説明します。
型キャストを実行するには、安全でないパッケージを注意して使用してください。より安全な代替方法は、以下に示すように、エンコーディング/バイナリ パッケージを利用することです:
<code class="go">// T represents a simple data structure. type T struct { A int64 B float64 } // EncodeT converts the T struct to a byte array. func EncodeT(t T) ([]byte, error) { buf := &bytes.Buffer{} err := binary.Write(buf, binary.BigEndian, t) return buf.Bytes(), err } // DecodeT converts a byte array to a T struct. func DecodeT(b []byte) (T, error) { t := T{} buf := bytes.NewReader(b) err := binary.Read(buf, binary.BigEndian, &t) return t, err }</code>
使用例:
<code class="go">t := T{A: 0xEEFFEEFF, B: 3.14} encoded, err := EncodeT(t) if err != nil { panic(err) } decoded, err := DecodeT(encoded) if err != nil { panic(err) } fmt.Printf("Encoded: %x", encoded) fmt.Printf("Decoded: %x %f", decoded.A, decoded.B)</code>
カスタム変換関数またはエンコーディング/gob パッケージも利用できます。より複雑な使用例については。
以上がGo でデータ構造を効率的にエンコードおよびデコードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。