即使Golang结构具有相同的功能,它也不会实现接口

时间:2016-01-21 16:24:13

标签: go

我不知道编译错误的原因是什么。我将不胜感激。

./router.go:190: cannot use listener (type webhooklistener.MyListener) as type webhook.Listener in field value:
    webhooklistener.MyListener does not implement webhook.Listener (missing webhook.handle method)
        have webhooklistener.handle()
        want webhook.handle()

客户端:

package webhook

type Listener interface {
    handle()
}

type Client struct {
    Listener Listener
}

监听器:

package webhooklistener

type MyListener struct {
}

func (ll MyListener) handle() {

}

路由器:

listener := webhooklistener.MyListener{}
client := webhook.Client{listener} // COMPILATION ERROR

1 个答案:

答案 0 :(得分:14)

webhook.Listener唯一的方法是未导出的,因此只有该包中的标识符才能实现它。如果您希望其他包中的类型能够实现它,则需要将其导出:

type Listener interface {
    Handle()
}