Maison >développement back-end >Golang >Comment puis-je sérialiser et désérialiser efficacement des structures dans Go à l'aide de GOB et Base64 ?

Comment puis-je sérialiser et désérialiser efficacement des structures dans Go à l'aide de GOB et Base64 ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-04 08:08:13338parcourir

How Can I Efficiently Serialize and Deserialize Structs in Go Using GOB and Base64?

Sérialisation et désérialisation efficaces dans Go

Golang propose plusieurs approches pour sérialiser et désérialiser des structures en chaînes. Lorsque vous travaillez avec des structures complexes telles que la structure Session, il est crucial d'utiliser une approche qui garantit la fidélité des données tout en maintenant les performances.

Utiliser GOB et Base64

Une méthode efficace consiste à utilisez l'encodeur GOB et l'encodage base64. Voici comment y parvenir :

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

// Custom type for serialization
type Session struct {
    Properties map[string]interface{}
    Permissions []int64
}

// GOB encoder
func ToGOB64(m Session) string {
    b := bytes.Buffer{}
    e := gob.NewEncoder(&b)
    err := e.Encode(m)
    if err != nil {
        panic(err)
    }
    return base64.StdEncoding.EncodeToString(b.Bytes())
}

// GOB decoder
func FromGOB64(str string) Session {
    m := Session{}
    by, err := base64.StdEncoding.DecodeString(str)
    if err != nil {
        panic(err)
    }
    b := bytes.Buffer{}
    b.Write(by)
    d := gob.NewDecoder(&b)
    err = d.Decode(&m)
    if err != nil {
        panic(err)
    }
    return m
}

Pour prendre en charge les types personnalisés (dans ce cas, Session), vous pouvez les enregistrer avec l'encodeur GOB :

func init() {
    gob.Register(Session{})
}

Autre Formats de sérialisation

Si GOB ne convient pas, il existe d'autres formats de sérialisation disponibles dans Go, tels que JSON, XML et protobuf. Chaque format offre des avantages et des compromis différents.

Performances

Les performances de la sérialisation et de la désérialisation dépendent en grande partie de la taille des données et du format choisi. GOB a tendance à être relativement rapide, tandis que JSON et XML peuvent être plus lents mais plus lisibles par l'homme. L'analyse comparative de différents formats peut aider à déterminer la meilleure option pour votre application spécifique.

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