在以下代码片段中 -
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)才能成为合法实现?