Go学习笔记:匿名成员
来源:互联网 发布:淘宝最火情趣丝袜模特 编辑:程序博客网 时间:2024/06/07 07:13
开始没搞明白啥是匿名成员,看了好几个文章,总算明白了,至少自认为是。
为啥需要匿名成员?
得从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中的好几个概念都包含进去了。
0 0
- Go学习笔记:匿名成员
- 【学习笔记02】java面向对象-成员变量、匿名对象
- Go学习笔记 (二) : 流程控制(if,for,switch) 与 函数 与 struct (匿名字段)
- 【Go学习笔记】Hello Go!
- c#学习笔记-匿名
- 达内学习笔记——静态成员函数,匿名对象,
- Go语言学习笔记
- Go学习笔记
- go学习笔记
- Go语言学习笔记
- go语言学习笔记
- Go学习笔记
- Go学习笔记(2)
- Go语言学习笔记
- go学习笔记
- Go学习笔记:interface
- GO语言学习笔记
- Go语言学习笔记
- JDK各个版本的新特性jdk1.5-jdk8
- php 面向对象的一个简单实例
- 用Windows命令行管理AWS资源
- SVN常用命令
- Android AES加密和解密
- Go学习笔记:匿名成员
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
- 不常用的标签
- 精彩课程预告:大数据实时处理–Spark及BDAS技术应用
- 堆的使用
- 新提交审核app保留检查更新入口将被拒绝
- Git 學習(2)—— 为版本库增加内容
- 连载:告诉你如何设计一个日访问量千万级别的系统,谈oracle的高级设计和开发(3)
- 关于EC2实例类型的选择