doujiaozhan2413 2015-07-17 02:33
浏览 600
已采纳

gob.Register()按类型还是每个变量?

I am doing something like this in my code

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)

It compiles but am I suppose to be doing it that way? Or do I just need to register one of them because they have the same type?

gob.Register(test1)
  • 写回答

1条回答 默认 最新

  • douduan4116 2015-07-17 02:36
    关注

    As per https://golang.org/pkg/encoding/gob/#Register -

    Register records a type, identified by a value for that type, under its internal type name.

    Register the empty type - e.g.

    gob.Register(map[string]interface{}{})
    

    Full example:

    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
    ", val)
    }
    

    Run it here: http://play.golang.org/p/e5vXER_dz-

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂