Go 语言 自定义类型 和 类型别名的区别
定义方式
// 自定义类型
type MyInt int
// 类型别名
type IntAlias = int
区别
var i MyInt = 0
var j IntAlias = 0
fmt.Printf("i MyInt %T %v\n", i, i) // 输出结果: i MyInt main.MyInt 0
fmt.Printf("j IntAlias %T %v\n", j, j) // 输出结果: j IntAlias int 0
系统两个类型别名 rune byte
type rune = int32
type byte = uint8
类型别名编译时会被转成对应类型
类型别名可以同相同类型进行计算,自定义类型则不能
var j IntAlias = 0
var myJ int = 3
fmt.Println(j + myJ)
自定义类型可以为类型添加方法
func (m MyInt) sum(i int) {
fmt.Println(int(m) + i)
}