Maison >développement back-end >Golang >Comment puis-je sérialiser et désérialiser efficacement des 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.
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 }
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 }
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!