首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >gob:未为接口注册类型:map[string]接口{}

gob:未为接口注册类型:map[string]接口{}
EN

Stack Overflow用户
提问于 2014-02-21 20:38:28
回答 2查看 17.3K关注 0票数 32

gob无法对map[string]interface{}进行编码

代码语言:javascript
运行
复制
gob: type not registered for interface: map[string]interface {}

http://play.golang.org/p/Si4hd8I0JE

代码语言:javascript
运行
复制
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)
    err := enc.Encode(a)
    if err != nil {
        log.Panic("e1: ", err)
    }
    b1 := buff.Bytes()
    err = dec.Decode(b)
    if err != nil {
        log.Panic("e2: ", err)
    }
    return b1
}

func main() {
    var a interface{}
    a = map[string]interface{}{"X": 1}
    b2, err := json.Marshal(&a)
    fmt.Println(string(b2), err)

    var b interface{}
    b1 := CloneObject(&a, &b)
    fmt.Println(string(b1))
}

可以在gob中对map[string]interface{}进行编码吗?我可以用JSON对其进行编码

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-22 00:20:35

添加

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

http://play.golang.org/p/Dd3IzJgl0A

票数 43
EN

Stack Overflow用户

发布于 2014-02-21 20:46:42

可能是,但你必须事先注册你的类型。参见http://golang.org/pkg/encoding/gob/#Register

详细信息记录在http://golang.org/pkg/encoding/gob/#hdr-Encoding_Details

(查看Go文档确实很有帮助:-)

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

https://stackoverflow.com/questions/21934730

复制
相关文章

相似问题

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