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 国际许可协议 进行许可。