首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Golang gob:未为接口注册的类型:

Golang gob:未为接口注册的类型:
EN

Stack Overflow用户
提问于 2013-10-10 01:07:00
回答 2查看 5.3K关注 0票数 2

所以我定义了一个作为string别名的String类型:

type String string

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

代码语言:javascript
复制
func (s String) String() string {
    str := "'" + s + "'"
    return string(str)
}

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

代码语言:javascript
复制
gob: type not registered for interface: dbUtils.String

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

我用类似的类型得到了相同的错误,但用gob.Register(otherType{})解决了这个问题。这不适用于String,大概是因为string不是一个接口。我是个新手,所以请解释一下发生了什么。

EN

回答 2

Stack Overflow用户

发布于 2013-10-10 02:19:16

它应该与String一起工作,但要确保传递的是String()对象的实例,而不是标识符字符串。所以使用gob.Register(String(""))

票数 2
EN

Stack Overflow用户

发布于 2013-10-10 03:00:01

我认为这可能是你想要实现的目标的解决方案:

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19278392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档