Maison >développement back-end >Golang >Comment puis-je sérialiser et désérialiser efficacement des structures complexes dans Go ?

Comment puis-je sérialiser et désérialiser efficacement des structures complexes dans Go ?

DDD
DDDoriginal
2024-11-30 12:38:12396parcourir

How Can I Efficiently Serialize and Deserialize Complex Structs in Go?

Sérialisation et désérialisation de structures complexes dans Go

Lorsque vous travaillez avec des structures de données complexes dans Go, il devient crucial de les sérialiser pour un stockage et une communication efficaces. Cela implique d'encoder la structure dans une chaîne pour la persistance, puis de la désérialiser pour récupérer les données d'origine.

Utiliser Gob et Base64

L'une des approches les plus efficaces pour sérialiser les structures Go consiste à utiliser le gob et les packages base64. Voici comment cela fonctionne :

import (
    "bytes"
    "encoding/base64"
    "encoding/gob"
    "fmt"
)

type SX map[string]interface{}

// go binary encoder
func ToGOB64(m SX) string {
    b := bytes.Buffer{}
    e := gob.NewEncoder(&b)
    err := e.Encode(m)
    if err != nil {
        fmt.Println("failed gob Encode", err)
    }
    return base64.StdEncoding.EncodeToString(b.Bytes())
}

// go binary decoder
func FromGOB64(str string) SX {
    m := SX{}
    by, err := base64.StdEncoding.DecodeString(str)
    if err != nil {
        fmt.Println("failed base64 Decode", err)
    }
    b := bytes.Buffer{}
    b.Write(by)
    d := gob.NewDecoder(&b)
    err = d.Decode(&m)
    if err != nil {
        fmt.Println("failed gob Decode", err)
    }
    return m
}

Sérialisation de structure personnalisée

Pour sérialiser des structures ou des types personnalisés, tels que la structure Session, ajoutez simplement les lignes suivantes au code :

func init() {
    gob.Register(SX{})
    gob.Register(Session{}) // Register your custom struct
}

Options de sérialisation supplémentaires

En plus de gob, il existe des formats de sérialisation alternatifs disponibles dans Go (à partir de 2020). Pour la sérialisation de structure dynamique, vous pouvez envisager de faire référence aux références 2022 à titre indicatif.

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!

Déclaration:
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