接口和实现

Sau*_*ngh 2 interface go

在以下代码片段中 -

type Input interface {
    Name() string
}

type Abc interface {
    Do(Input)
}

type InputImpl struct {
}

func (InputImpl) Name() string {
    return "sample-impl"
}

type AbcImpl struct {
}

func (abcImpl *AbcImpl) Do(input Input){
    // do something
}
Run Code Online (Sandbox Code Playgroud)

AbcImplstruct 是Abc接口的一个实现,但是像这样改变最后一个函数 -

func (abcImpl *AbcImpl) Do(input InputImpl){
    // do something
}
Run Code Online (Sandbox Code Playgroud)

现在AbcImpl不再实现Abc了,尽管InputImpl实现了Input接口!

我是否遗漏了某些东西,或者必须具有接口完全相同的签名(不是事件 Impls)才能成为合法实现?

Trầ*_*Huy 5

是的,您必须遵循您指定的方法签名。如果不遵循签名,则不会称为“执行”。

示例:接口示例

从围棋之旅: There is no explicit declaration of intent, no "implements" keyword.