gob:类型未注册接口:map [string] interface {} [英] gob: type not registered for interface: map[string]interface {}

查看:1460
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆