Maison > développement back-end > Golang > le corps du texte

Comment encoder une `map[string]interface{}` avec Gob ?

Barbara Streisand
Libérer: 2024-11-11 15:28:03
original
673 Les gens l'ont consulté

How to Encode a `map[string]interface{}` with Gob?

gob : Encodage de la map[string]interface{}

Dans cet article, nous explorerons un problème courant rencontré lors de l'utilisation de gob pour encoder les types de données map[string]interface{}. Lorsqu'ils tentent d'encoder une telle carte, les utilisateurs peuvent rencontrer l'erreur « gob : type non enregistré pour l'interface : map[string]interface {}."

Pour résoudre ce problème, nous introduisons une solution simple :

gob.Register(map[string]interface{}{})
Copier après la connexion

En enregistrant le type map[string]interface{} avec gob, nous permettons à l'encodeur de reconnaître et de gérer correctement cette structure de données lors de l'encodage. processus.

Voici un exemple de code mis à jour qui montre comment encoder et décoder un type map[string]interface{} à l'aide de gob, après avoir enregistré le type :

package main

import (
    "bytes"
    "encoding/gob"
    "encoding/json"
    "fmt"
    "log"
)

func CloneObject(a, b interface{}) []byte {
    buff := new(bytes.Buffer)
    enc := gob.NewEncoder(buff)
    dec := gob.NewDecoder(buff)
    enc.Encode(a)
    b1 := buff.Bytes()
    dec.Decode(b)
    return b1
}

func main() {
    var a interface{}
    a = map[string]interface{}{"X": 1}
    b2, err := json.Marshal(&a)
    fmt.Println(string(b2), err)

    gob.Register(map[string]interface{}{})

    var b interface{}
    b1 := CloneObject(&a, &b)
    fmt.Println(string(b1))
}
Copier après la connexion

Avec l'enregistrement du type gob , l'encodage et le décodage des valeurs map[string]interface{} fonctionneront correctement et le message d'erreur "gob : type non enregistré pour l'interface : map[string]interface {}" ne s'affichera plus. apparaître.

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