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

Pourquoi est-ce que j'obtiens l'erreur « gob : type non enregistré pour l'interface : map[string]interface {} » dans Go ?

Patricia Arquette
Libérer: 2024-11-11 09:29:03
original
323 Les gens l'ont consulté

Why do I get the

Erreur : "gob : type non enregistré pour l'interface : map[string]interface {}"

Dans Go, le package gob fournit prise en charge du codage et du décodage des valeurs dans une représentation binaire. Cependant, lorsque vous essayez d'encoder une valeur map[string]interface{} à l'aide de gob, vous pouvez rencontrer l'erreur :

gob: type not registered for interface: map[string]interface {}
Copier après la connexion

Cette erreur signifie que le package gob ne connaît pas le type map[string] interface{}. Pour résoudre ce problème, vous devez explicitement enregistrer le type à l'aide de la fonction gob.Register.

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

En enregistrant le type, vous informez le package gob qu'il doit reconnaître et gérer map[string]interface{ } valeurs lors des opérations d'encodage et de décodage.

Voici une version modifiée du code que vous avez fourni qui inclut l'enregistrement nécessaire :

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)
    // Register the map[string]interface{} type for encoding
    gob.Register(map[string]interface{}{})
    err := enc.Encode(a)
    if err != nil {
        log.Panic("e1: ", err)
    }
    b1 := buff.Bytes()
    err = dec.Decode(b)
    if err != nil {
        log.Panic("e2: ", err)
    }
    return b1
}

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

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

Après avoir enregistré le type, vous pouvez encoder et décoder avec succès le valeur map[string]interface{} en utilisant gob.

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