2014-02-21 46 views
16

gob未能編碼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)) 
} 

是否有可能以編碼在料滴map[string]interface{}? 我可以使用JSON對其進行編碼

回答

8

可能是的,但您必須事先註冊您的類型。請參閱http://golang.org/pkg/encoding/gob/#Register

細節在http://golang.org/pkg/encoding/gob/#hdr-Encoding_Details

記錄(它確實有助於看看圍棋文檔:-)

+0

谷歌只返回2頁。此頁面並轉到源代碼:https://www.google.com.ua/search?q=gob%3A+type+not+registered+for+interface%3A+map%5Bstring%5Dinterface+%7B%7D&oq=gob %3A +型+未+註冊+爲+接口%3A +地圖%5Bstring%5Dinterface +%7B%7D&AQS = chrome..69i57j69i58&的SourceID =鉻&espv = 210&es_sm = 93&即= UTF-8#q =%22gob:+型+未+註冊爲+ +接口:+映射%5Bstring%5Dinterface +%7B%7D%22 – Artem

相關問題