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
Libérer: 2024-12-04 08:08:13
original
357 Les gens l'ont consulté

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

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

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!

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