我有这个:

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/

10-10 14:32