go语言学习笔记 — 进阶 — 接口(2.2):实现接口的条件 —— 接口中的方法都被实现
Posted Locutus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习笔记 — 进阶 — 接口(2.2):实现接口的条件 —— 接口中的方法都被实现相关的知识,希望对你有一定的参考价值。
当一个接口含有多个方法时,只有这些接口方法都被实现了,我们才能正确编译并使用接口。如下所示,在接口中包含WriteData方法和CanWrite方法,只有在file结构体绑定方法WriteData和CanWrite之后,才能正常使用接口。
type DataWwriter interface {
WriteData(data interface{})
CanWrite() bool // 新增接口方法CanWrite
}
type file struct{}
func (d *file) WriteData(data interface{}) error {
...
}
func (d *file) WriteData() bool {
...
}
go语言的接口实现是隐式的,我们无须让实现接口的(结构体)类型知道有哪些接口(需要被实现),这个称为非侵入式设计。
我们在编写(接口)方法时,无法预测未来有哪些(接口)方法会变成接口。一旦某个接口被创建出来,要求旧代码来实现这个接口,就需要修改旧代码的派生部分,这一般会造成雪崩式的重新编译。
注: 传统的派生接口和类构建模式,使类型之间有强耦合的父子关系。这种关系一般以类派生图的方式运行。随着系统功能的不断增加,这棵“派生树“会越来越复杂。
非侵入式设计
让go程序实现的所有类型都是平行的、组合的
。因此,使用go时,不需要也不可能有类派生
,开发者唯一需要关注的是“我需要什么,我能实现什么”
。
以上是关于go语言学习笔记 — 进阶 — 接口(2.2):实现接口的条件 —— 接口中的方法都被实现的主要内容,如果未能解决你的问题,请参考以下文章
go语言学习笔记 — 进阶 — 接口(2.3):接口无法实现的例子
go语言学习笔记 — 进阶 — 接口:接口的嵌套组合 —— 把多个接口放到一个接口内
go语言学习笔记 — 进阶 — 接口:使用类型分支,批量判断空接口中变量的类型