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 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b