golang中type 可以Embeded。拥有某个类型,那就拥有这个类型的一切。有的时候,就会出现A类型没有实现某个接口,但是嵌入A中的B类型实现了,这个时候也相当于A实现了该接口。
这里仅仅讨论一种情况:
如果A中还嵌入了C,C和B都实现了同样都接口I,那么会是什么情况?是调用C呢还是B呢还是别的?
实例代码:
package main
type errDemo struct {
}
type ERR struct {
}
func (e *errDemo)Error()string {
return "errDemo error!"
}
func (e *ERR)Error()string {
return "errDemo error!"
}
type ERROR struct {
ERR
errDemo
}
func main() {
var e ERROR = ERROR{}
e.Error()
}
程序在编译阶段会报错: ambiguous selector e.Error
解决办法:
A实现这个接口
有疑问加站长微信联系(非本文作者)