【2022 漫游 Golang】type 关键字
在 Go 语言中,type 关键字常被我们用来创建新的结构体。同样的,type 也可以用来创建其它的用户自定义类型。在创建新类型时,有类型别名和类型定义两种方式,你知道它们的区别吗?
1 type 关键字
对于使用过 Go 语言的人,相信对type关键字都不陌生,它可以帮助我们定义结构体或接口:
1 | type Student struct{ |
在使用 type 定义结构体时,我们可以把它看作是基于struct{}类型定义了一个新的类型Student。
其实,除了用于创建新类型,type还有创建类型别名的作用。
2 类型别名 vs 类型定义
基于一个类型创建一个别名,称之为类型别名 (alias)。
基于一个类型创建一个新类型,称之为类型定义 (definition)。
1 | type Int1 = int // 类型别名,Int1 是 int 类型的别名 |
它们之间的区别是什么呢?
以上述定义的Int1和Int2为例,我们可以用int类型的变量初始化Int1类型,因为Int1只是int类型的一个别名。
但如果我们用一个int类型的变量初始化Int2类型时,对Int2类型的初始化会报错,因为Int2是一个新的类型。
1 | type Int1 = int // 类型别名,Int1 是 int 类型的别名 |
不过,Int1类型和Int2类型都可以用相应类型的字面量来初始化。
1 | type Int1 = int // 类型别名,Int1 是 int 类型的别名 |
相关链接
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Robby!
评论

