我正在尝试对包含Interface {}作为字段的结构进行解编码。这里的问题是,编码工作正常,但是如果我尝试将数据解码data为值get { <nil>},如果更改Data interface{}为Data substring,它实际上可以工作,但这对我来说不是解决方案,因为我想将查询结果缓存到数据库中,该数据库的类型取决于查询。(例如Users或Cookies)最小的工作实例来源http://play.golang.org/p/aX7MIfqrWlpackage mainimport ( "bytes" "encoding/gob" "fmt")type Data struct { Name string Data interface{}}type SubType struct { Foo string}func main() { // Encode encodeData := Data{ Name: "FooBar", Data: SubType{Foo: "Test"}, } mCache := new(bytes.Buffer) encCache := gob.NewEncoder(mCache) encCache.Encode(encodeData) fmt.Printf("Encoded: ") fmt.Println(mCache.Bytes()) // Decode var data Data pCache := bytes.NewBuffer(mCache.Bytes()) decCache := gob.NewDecoder(pCache) decCache.Decode(&data) fmt.Printf("Decoded: ") fmt.Println(data)}产出预期产量编码:[37255129 3 1 1 4 68 97 116 97 1 255 130 0 1 2 1 4 78 97 109 101 1 12 0 1 4 68 97 116 97 1 255 132 0 0 0 0 29 255 131 3 1 1 7 83117 98 84 121 112 101 1 255 132 0 1 1 1 3 70 111 111 1 12 0 0 0 19 255 130 1 6 70 111 111 66 97 114 1 1 4 84 101 115 116 0 0]解码:{FooBar {测试}}当前结果编码:[37255129 3 1 1 4 68 97 116 97 1 255 130 0 1 2 1 4 78 97 109 101 1 12 0 1 4 68 97 116 97 1 255 132 0 0 0 0 29 255 131 3 1 1 7 83117 98 84 121 112 101 1 255 132 0 1 1 1 3 70 111 111 1 12 0 0 0 19 255 130 1 6 70 111 111 66 97 114 1 1 4 84 101 115 116 0 0]解码后:{}
2 回答
没有找到匹配的内容?试试慕课网站内搜索吧
- 2 回答
- 0 关注
- 273 浏览
添加回答
举报
0/150
提交
取消