在 Go 语言中, type
关键字用于定义新的类型
# type MyInt int
和 type MyInt = int
区别
类型定义 vs 类型别名
type MyInt int
定义了一个新的命名类型MyInt
, 它底层使用int
类型的存储结构,但是它与int
类型是 <font color="#ff0000"> 完全独立的 </font>。type MyInt = int
则是定义了一个类型别名,MyInt
只是int
类型的另一个名字,<font color="#ff0000"> 两者是等价的 </font>。- 在编译的时候,类型别名会被替换为
int
因此以下代码会出错, i1(MyInt)
与 i2(int32)
的类型不一样,无法将 i1
的值赋值给 i2
1 | type MyInt int32 |
以下代码正常运行
1 | package main |
# 自定义类型绑定方法
1 | package main |