go语言面向对象之嵌入

 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实现这个接口

你可能感兴趣的:(go语言面向对象之嵌入)