Encodage et décodage des structures de données dans Go
En Go, il est souvent nécessaire d'encoder et de décoder les structures de données dans un tableau d'octets pour la transmission ou du stockage. Cet article explore les techniques permettant d'effectuer cette tâche de manière efficace et robuste.
Pour effectuer une conversion de type, utilisez le package non sécurisé avec prudence. Une alternative plus sûre consiste à exploiter le package encoding/binary, comme indiqué ci-dessous :
<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>
Exemple d'utilisation :
<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>
Les fonctions de conversion personnalisées ou le package encoding/gob peuvent également être utilisés. pour des cas d'utilisation plus complexes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!