gob:类型未注册接口:map [string] interface {} [英] gob: type not registered for interface: map[string]interface {}
本文介绍了gob:类型未注册接口:map [string] interface {}的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
$ g $
gob
无法编码 map [string] interface {}
$ b gob:type未注册接口:map [string]接口{}
http://play.golang.org/p/Si4hd8I0JE
包主
导入(
字节
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(& amp ; a)
fmt.Println(string(b2),err)
var b interface {}
b1:= CloneObject(& a,& b)
fmt.Println(string(b1))
}
是否可以编码gob中的 map [string]接口{}
?
我可以用JSON编码它
解决方案
add
gob.Register(map [string] interface {} {})
http://play.golang.org/p/Dd3IzJgl0A
gob
fails to encode map[string]interface{}
gob: type not registered for interface: map[string]interface {}
http://play.golang.org/p/Si4hd8I0JE
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))
}
Is it possible to encode map[string]interface{}
in gob?
I am able to encode it with JSON
解决方案
add
gob.Register(map[string]interface{}{})
http://play.golang.org/p/Dd3IzJgl0A
这篇关于gob:类型未注册接口:map [string] interface {}的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文