go语言面向对象之嵌入

SergeyJay · · 1039 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:SergeyJay

查看原文:go语言面向对象之嵌入

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1039 次点击  
加入收藏 微博
1 回复  |  直到 2021-01-05 16:56:25
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传