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

Types Golang gob:未为接口注册的类型:,types,interface,go,rpc,gob,Types,Interface,Go,Rpc,Gob,因此,我定义了一个类型String,它是String的别名: 键入字符串 然后,我对其应用以下方法: func (s String) String() string { str := "'" + s + "'" return string(str) } 然后,我尝试通过rpc发送包含字符串的结构,并得到以下错误: gob: type not registered for interface: dbUtils.String 我没有定义任何同名的接口,所以为什么gob认为这是一个

因此,我定义了一个类型
String
,它是
String
的别名:

键入字符串

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

func (s String) String() string {
    str := "'" + s + "'"
    return string(str)
}
然后,我尝试通过rpc发送包含
字符串的结构,并得到以下错误:

gob: type not registered for interface: dbUtils.String
我没有定义任何同名的接口,所以为什么gob认为这是一个接口

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

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

它应该可以处理String,但是要确保传递的是String()对象的实例,而不是标识符字符串。因此,请使用
gob.Register(字符串(“”)

我认为这可能是解决您试图实现的问题的一种方法:


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

我认为这可能是您试图实现的目标的解决方案:


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

这解决了我最初的问题,现在我得到了错误:
gob:name未为接口注册:“dbUtils.string”
。有什么想法吗?这解决了我最初的问题,现在我得到了错误:
gob:name没有为接口注册:“dbUtils.String”
。对此有什么想法吗?你能在回答中总结该链接的内容吗?你能在回答中总结该链接的内容吗?