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{}{})
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)) }
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!