Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengekodkan `map[string]antara muka{}` dengan Gob?
gob: Pengekodan peta[rentetan]antara muka{}
Dalam artikel ini, kami akan meneroka isu biasa yang dihadapi semasa menggunakan gob to mengekodkan jenis data peta[rentetan]antara muka{}. Apabila cuba mengekod peta sedemikian, pengguna mungkin menghadapi ralat "gob: type not registered for interface: map[string]interface {}."
Untuk menangani perkara ini, kami memperkenalkan penyelesaian mudah:
gob.Register(map[string]interface{}{})
Dengan mendaftarkan jenis peta[rentetan]antara muka{} dengan gob, kami membolehkan pengekod mengenali dan mengendalikan struktur data ini dengan betul semasa pengekodan proses.
Berikut ialah contoh kod dikemas kini yang menunjukkan cara mengekod dan menyahkod jenis peta[rentetan]antara muka{} menggunakan gob, selepas mendaftarkan jenis:
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)) }
Dengan pendaftaran jenis gob , pengekodan dan penyahkodan nilai peta[rentetan]antaramuka{} akan berfungsi dengan lancar dan mesej ralat "gob: type not registered for interface: map[string]interface {}" tidak akan muncul lagi.
Atas ialah kandungan terperinci Bagaimana untuk Mengekodkan `map[string]antara muka{}` dengan Gob?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!