Maison > développement back-end > Golang > Comment encoder et décoder efficacement les structures de données dans Go ?

Comment encoder et décoder efficacement les structures de données dans Go ?

Barbara Streisand
Libérer: 2024-10-29 01:28:30
original
897 Les gens l'ont consulté

How to Efficiently Encode and Decode Data Structures in Go?

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal