如何实现两个具有相同方法名和不同参数的接口

And*_*son 4 interface go

我想实现两个不同的接口(来自两个不同的包)。但它们之间存在冲突,如下所示:

type InterfaceA interface {
  Init()
}

type InterfaceB interface {
  Init(name string)
}

type Implementer struct {} // Wants to implement A and B

func (i Implementer) Init() {}

func (i Implementer) Init(name string) {} // Compiler complains
Run Code Online (Sandbox Code Playgroud)

它说“方法重新声明”。一个结构如何实现这两个接口?

小智 6

正如已经回答的那样,这是不可能的,因为 Golang 不(并且可能不会)支持方法重载。

查看Golang 常见问题解答

其他语言的经验告诉我们,使用具有相同名称但不同签名的多种方法有时是有用的,但在实践中也可能会造成混乱和脆弱。仅按名称匹配并要求类型一致是 Go 类型系统中的一个重大简化决策。