首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gob.Register()按类型或为每个变量?

gob.Register()按类型或为每个变量?
EN

Stack Overflow用户
提问于 2015-07-17 02:33:26
回答 1查看 534关注 0票数 2

我在代码中做了类似的事情

代码语言:javascript
复制
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)

它会编译,但我是否应该这样做呢?还是我只需要注册其中一个,因为他们有相同的类型?

代码语言:javascript
复制
gob.Register(test1)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-17 02:36:30

根据https://golang.org/pkg/encoding/gob/#Register -

寄存器在其内部类型名称下记录由该类型的值标识的类型。

注册空类型。

代码语言:javascript
复制
gob.Register(map[string]interface{}{})

完整的例子:

代码语言:javascript
复制
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-

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31467602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档