Go学习笔记1.5 接口剖析
interface
Go语言中提供了一种类型叫做接口类型。接口是一种抽象类型,它并没有暴露所含数据的布局或内部结构,当然也没有哪些数据的基本操作,它所提供的仅仅是一些方法而已。如果你拿到一个接口类型的值,你无从知道它是什么,你能知道的仅仅是它能做什么,也就是说,仅仅能知道它提供了哪些方法。
一个接口类型定义了一套方法,如果一个具体的类型要实现该接口,那么必须实现该接口类型定义中的所有方法。
声明接口类型
//声明 A 接口 包含 B 和 C 两个方法
type A interface {
B() float64
C() float64
}
//也可以组合已有的接口得到新的接口
type AA interface {
A
D(int) float64
}
接口实现
一个接口可以被多个类型实现,一个类型也可以实现多个接口
type Shape interface {
GetArea() float64
GetPerimeter() float64
}
type Circle struct {
R float64
}
// Circle实现Shape接口的GetArea方法
func (c Circle)GetArea() float64 {
return 3.14 * c.R * c.R
}
// Circle实现Shape接口的GetPerimeter方法
func (c Circle)GetPerimeter() float64 {
return 3.14 * 2 * c.R
}
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 进行许可。