Content #
那什么是 type set(类型集合)呢?伊恩·泰勒给出了这个概念的定义:
- 每个类型都有一个 type set;
- 非接口类型的类型的 type set 中仅包含其自身。比如非接口类型 T,它的 type set 中唯一的元素就是它自身:{T};
- 对于一个普通的、没有 type list 的普通接口类型来说,它的 type set 是一个无限集合。所有实现了这个接口类型所有方法的类型,都是该集合的一个元素,另外,由于该接口类型本身也声明了其所有方法,因此接口类型自身也是其 Type set 的一员;
- 空接口类型 interface{}的 type set 中囊括了所有可能的类型。
当类型 T 是接口类型 I 的 type set 的一员时,T 便实现了接口 I;对于使用嵌入接口类型组合而成的接口类型,其 type set 就是其所有的嵌入的接口类型的 type set 的交集。
而对于一个带有自身 Method 的嵌入其他接口类型的接口类型,比如下面代码中的 MyInterface3:
type MyInterface3 interface {
E1
E2
MyMethod03()
}
它的 type set 可以看成 E1、E2 和 E3(type E3 interface { MyMethod03()})的 type set 的交集。