2013-10-09 122 views
2

所以我有一個類型String即定義的string別名:Golang料滴:類型未註冊接口:

type String string

我然後應用以下方法將其:

func (s String) String() string { 
    str := "'" + s + "'" 
    return string(str) 
} 

然後我嘗試通過rpc發送一個包含String的結構,並得到以下錯誤:

gob: type not registered for interface: dbUtils.String 

我沒有定義任何具有相同名稱的接口,爲什麼gob認爲這是一個接口?

我得到了類似類型的錯誤,但用gob.Register(otherType{})解決了它。 這不適用於String,大概是因爲string不是接口。我有點新,所以請解釋發生了什麼。

回答

2

它應該與String一起工作,但要確保您傳遞的是String()對象的實例,而不是標識符String。因此,使用gob.Register(String(""))

+0

這解決了我最初的問題,現在我收到錯誤:'gob:name not registered for interface:「dbUtils.String」'。對此有任何想法? –

2

我想這可能是你要完成的一個解決方案:

http://play.golang.org/p/9OrSKfcCAQ

請注意,你必須明確地聲明變量爲一個字符串「」。如果使用「:=」賦值,則認爲它是一個字符串,並忽略該函數。

+0

你能在你的回答中總結那個鏈接的內容嗎? –