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

Paw*_*ski 4 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()
Run Code Online (Sandbox Code Playgroud)

客户:

package webhook

type Listener interface {
    handle()
}

type Client struct {
    Listener Listener
}
Run Code Online (Sandbox Code Playgroud)

监听器:

package webhooklistener

type MyListener struct {
}

func (ll MyListener) handle() {

}
Run Code Online (Sandbox Code Playgroud)

路由器:

listener := webhooklistener.MyListener{}
client := webhook.Client{listener} // COMPILATION ERROR
Run Code Online (Sandbox Code Playgroud)

Ain*_*r-G 15

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

type Listener interface {
    Handle()
}
Run Code Online (Sandbox Code Playgroud)