Go学习笔记:匿名成员

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

开始没搞明白啥是匿名成员,看了好几个文章,总算明白了,至少自认为是。

为啥需要匿名成员?

得从OO说起。OO要说是现代的计算机编程语言中必需的部分了。不过不同的语言对于如何实现OO中的各种概念做法并不一样。Go对OO提供了支持,但采用的是一种简洁并且直接的办法,没有类似于Java中的extends、implements关键字,而是直接用匿名成员,并通过“委派”来实现。比如下面这些代码:


type E interface{

Start()

Stop()

Renewal(x int)

}

type W interface {

Open()

Close()

Renewal()

}

type Car struct {
E
W
}

有了这些,那么当创建了Car的实例以后,就可以使用:


car.Start()
car.Stop()
car.Open()
car.Close()

和使用Car自己的方法没任何区别。是不是有extends和implements的意思!

需要注意的是:由于存在同名方法(Renewal),就不能这样了:

car.Renewal()//编译错误

而必需是:

car.E.Renewal(5)

或者

car.W.Renewal()


看起来,有了这个匿名成员和委派,OO中的好几个概念都包含进去了。




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

本文来自:CSDN博客

感谢作者:anod

查看原文:Go学习笔记:匿名成员

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

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