我在代码中做了类似的事情
test1 = make(map[string]interface{})
test2 = make(map[string]interface{})
test3 = make(map[string]interface{})
test4 = make(map[string]interface{})
gob.Register(test1)
gob.Register(test2)
gob.Register(test3)
gob.Register(test4)它会编译,但我是否应该这样做呢?还是我只需要注册其中一个,因为他们有相同的类型?
gob.Register(test1)发布于 2015-07-17 02:36:30
根据https://golang.org/pkg/encoding/gob/#Register -
寄存器在其内部类型名称下记录由该类型的值标识的类型。
注册空类型。
gob.Register(map[string]interface{}{})完整的例子:
func main() {
gob.Register(map[string]interface{}{})
a := map[string]interface{}{
"X": 1,
"Greeting": "hello",
}
buf := new(bytes.Buffer)
err := gob.NewEncoder(buf).Encode(a)
if err != nil {
log.Fatal(err)
}
fmt.Println(buf.Bytes())
val := make(map[string]interface{})
err = gob.NewDecoder(buf).Decode(&val)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", val)
}在这里运行它:dz-
https://stackoverflow.com/questions/31467602
复制相似问题