Maison > développement back-end > Golang > Comment encoder une `map[string]interface{}` avec Gob ?

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

Barbara Streisand
Libérer: 2024-11-11 15:28:03
original
757 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!

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