我有这个:
type Foo interface {
GetURL() string
}
type ESInfo struct {
Host string
Port int
Foo
}
我尝试创建一个ESInfo的新实例
esinfo := sync.ESInfo{
Host: "es-dev.cm2.com",
Port: 9200,
GetURL: func() string {
return esinfo.Host + ":" + esinfo.Port
}
}
但我明白了:
不能将'func(){}'(func()类型)用作Foo类型
我不知道是怎么回事。 :(
最佳答案
您可能会从Go接口的一些基础教程中受益。
发生的事情是您正在尝试在ESinfo类型上设置函数指针成员变量,并且不存在这样的成员。要实现接口,必须为该类型定义一个方法:
func (e ESInfo) GetURL() string {
// Function body here
}
之后,ESInfo将实现您的界面。
关于go - 无法将func添加到界面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62184916/