4.4.4-7 Named 类型
Named 结构用来表示 Defined Types, 即通过语法结构type A β
或者type A = β
定义的类型,其中 β 表示任何合法的表达式,例如如果 β 表示struct {...}
, 则整个声明就是一个 struct 结构体。
type A = β
叫着类型别名,是 go 1.9 引入的语法,通常情况下这种用法中 β 都是一个具体的类型名字,假设为 B,则此时 A 与 B 完全是一样的类型,纯粹只是为类型 B 引入一个别名。可以参考Russ Cos 的文章了解使用场景。
而type A β
则会创建一个新的类型,A 的 underlying type 是 β 所表示的类型, 例如如果 β 表示struct {...}
, 则其类型就是上文提到的 Struct 类型;如果 β 是一个具体的类型名字,例如 C, 那么 A 的 underlying type 就是 C. 后面有专门的章节讨论Underlying Type.
Named结构定义如下:
check 是类型检查器的数据结构,详细介绍在Checker, 字段info
在后期用于类型的循环依赖检查. 每种类型都必须实现Underlying() Type
方法(见Type 接口),其他所有类型的该方法都是返回自身,只有 Named 类型是返回属性underlying
.
最后更新于