10.4 基本接口

接口可能仅包含一个或多个方法的列表,但不包括其他内容。由此类接口定义的类型集是实现这些方法的所有类型的集合。类型集完全可以由一组方法定义的接口称为基本接口。

基本接口类型的 "方法集"由该接口指定的方法组成。

只有基本接口类型才能用作值或变量的类型或其他非接口类型的组件。

类型可能实现多个不同的接口,它们可能有重叠。实现特定接口的每个类型都是该接口的类型集的成员。特别地,所有类型都是空接口的别名 any 的类型集的成员,即 interface{}。

例子:

type Human struct {}
type Martian struct {}

type Player interface {
    Play()
}

type Drinker interface {
    Drink()
}

func (h Human) Play() {}
func (h Human) Drink() {}

func (m Martian) Drink() {}

在此示例中,Human 的方法集是 Play() 和 Drink(),Martian 的方法集是 Drink()。因此,Player 的类型集是 Human,Drinker 的类型集是 Human 和 Martian。

因此,Human 类型实现了 Player 和 Drinker 接口,Martian 类型实现了 Drinker。(并且,这两种类型都自动实现了 interface{}。)

最后更新于