Heim > Artikel > Backend-Entwicklung > Warum erhalte ich in Go den Fehler „gob: Typ nicht registriert für Schnittstelle: map[string]interface {}“?
Fehler: „gob: Typ nicht registriert für Schnittstelle: map[string]interface {}“
In Go stellt das gob-Paket bereit Unterstützung für die Kodierung und Dekodierung von Werten in eine binäre Darstellung. Wenn Sie jedoch versuchen, einen Map[string]interface{}-Wert mit gob zu kodieren, kann der folgende Fehler auftreten:
gob: type not registered for interface: map[string]interface {}
Dieser Fehler bedeutet, dass das gob-Paket den Typ „map[string]“ nicht kennt. Schnittstelle{}. Um dieses Problem zu beheben, müssen Sie den Typ explizit mit der Funktion „gob.Register“ registrieren.
gob.Register(map[string]interface{}{})
Durch die Registrierung des Typs teilen Sie dem gob-Paket mit, dass es „map[string]interface{“ erkennen und verarbeiten soll. }-Werte während der Kodierungs- und Dekodierungsvorgänge.
Hier ist eine modifizierte Version des von Ihnen bereitgestellten Codes, die die erforderliche Registrierung enthält:
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)) }
Nach der Registrierung des Typs können Sie den erfolgreich kodieren und dekodieren map[string]interface{}-Wert mit gob.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in Go den Fehler „gob: Typ nicht registriert für Schnittstelle: map[string]interface {}“?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!