-
type分三类
- 预声明标识类型,基本就是boolean,numeric and string
- 复合类型,如:map slice arry struct interface pointer function channel 这些使用(type字面量)构造的类型
-
自声明类型,分两种:
var Age int // 类型定义 var Int = int // 类型别名
-
类型定义,type: 一人千面
- 创建了一个完全新的类型,与其所基于的类型是两个不同的类型。
- 不继承底层类型的方法,但会继承底层类型的元素(如果是interface类型,那么其方法集也会保留下来,在我看interface的方法集实际上类似于字段)
- 类型别名,类型别名是给某个类型起的别名,该别名本质上依然是该类型。
-
-
底层类型,每一个type都有其底层类型,1和2类的底层类型都是其本身,3的底层类型视情况而定。
type ( A1 = string A2 = A1 ) type ( B1 string B2 B1 B3 []B1 B4 B3 )
A1,A2,B1,B2的底层类型都是string,B3,B4的底层类型都是[]B1
-
接口类型(interface type),推荐看 Go接口深入解析
interface {}
type ReadWriter interface { Read(b Buffer) int Write(b Buffer) int } type File interface { ReadWriter Close() }
-
结构体类型,结构体是命名元素的序列,我们称这些命名元素为字段,每个字段都有名字(name)和类型(type)。非空字段的名字必须唯一,字段可以显式或者隐式(一个字段只有type而没有名字)的指定。
- 隐式字段称为嵌入字段。嵌入字段要么是个类型,要么是个非接口类型的指针类型。
typt T struct { name string } type T1 struct { value int // 正常字段 int // 嵌入字段:int类型 *T // 嵌入字段:指向类型T的指针类型 }
- 如果一个 type T1 被嵌入另一个 type T 作为它的 filed,T1 的所有 field 和 method 都可以在 T 中使用
- 空结构体 ,重要的是其内存消耗等于0。
参考
以上所述就是小编给大家介绍的《go中的type》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。