2

所以我有一个类型Stringstring定义的别名:

type String string

然后我对它应用以下方法:

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

然后我尝试发送一个包含Stringover rpc 的结构并得到以下错误:

gob: type not registered for interface: dbUtils.String

我没有定义任何同名的接口,那为什么gob会认为这是一个接口呢?

我遇到了类似类型的相同错误,但使用gob.Register(otherType{}). 这不适用于String,大概是因为string它不是接口。我有点新手,所以请解释发生了什么。

4

2 回答 2

2

它应该适用于 String,但请确保您传递的是 String() 对象的实例,而不是标识符 String。所以使用gob.Register(String(""))

于 2013-10-09T18:19:16.103 回答
2

我认为这可能是您想要完成的解决方案:

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

请注意,您必须将变量显式声明为“字符串”。如果您使用 ":=" 赋值将假定它是一个字符串并忽略该函数。

于 2013-10-09T19:00:00.913 回答