持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
golang接口
前文
本文内容为对于golang接口相关知识的学习记录。由于主要是个人的理解,其中难免有不准确之处。如有出现还请见谅。
什么是golang的接口
golang的接口主要是描述了一系列方法的集合。而对于实现接口的方式而言,golang中不需要像其他语言需要显式的处理,而是只要实现了这些方法,就认为是这个接口类型的实例。
golang接口类型
- 单一接口类型
- 指的是接口之间没有关联关系
- 组合接口类型
- 指当前接口包含其他已存在接口的方法
- 混合接口类型
- 当前接口包含其他接口的一部分方法
实现接口
那么什么是接口的实现呢?如果一个类型拥有该接口的所有方法,那么就认为这个类型实现了这个接口,这个对象是接口的实例。我们可以把具体的类型描述为特定的接口。例如下面的这个例子:
var w io.Writer
w = os.Stdout
w = new(bytes.Buffer)
如上面w定义为一个接口,而w进行的两次赋值操作,其对象本身都具备w接口中所定义的方法,因此我们成功的给w进行赋值,也就是w实际值为接口的实例。
接口类型的断言
所谓断言,主要是验证表达式的正确性。而接口的类型断言,则主要是验证某个实例对象,是否为该接口的类型实现。也就是我们要验证的是该对象是否具有该待验证接口的全部方法。
if f, ok := w.(*os.File); ok {
}
对于断言的表达式,实际返回的值为布尔类型,用来表示该对象是否为接口w的实例对象。在实际的开发中,接口的断言一般用作一个对象的类型值判断等。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。