ホームページ  >  記事  >  バックエンド開発  >  Go でデータ構造を効率的にエンコードおよびデコードするにはどうすればよいですか?

Go でデータ構造を効率的にエンコードおよびデコードするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-29 01:28:30764ブラウズ

How to Efficiently Encode and Decode Data Structures in Go?

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 サイトの他の関連記事を参照してください。

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