您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页go语言面向对象之嵌入

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

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务