小编Sau*_*ngh的帖子

接口和实现

在以下代码片段中 -

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)才能成为合法实现?

interface go

2
推荐指数
1
解决办法
82
查看次数

标签 统计

go ×1

interface ×1