- 自定义类型: 当现有类型不足以满足需求的时候, 自己创建的类型
- 类型别名: 仅存在于编写过程, 提高代码可读性 ( byte 是 uint8 的别名; rune 是 uint32 的别名 )
// NewInt 自定义类型
type NewInt int
// myInt 类型别名
type myInt = int
func main() {
// 这个是自定义类型, 经过编译, 它的类型不发生改变
var a NewInt
fmt.Printf("%v, %T\n", a, a) // 0, main.NewInt
// 下边两个都是别名, 仅存在于编写过程, 编译后, 显示原本的类型
var b myInt
fmt.Printf("%v, %T\n", b, b) // 0, int
var c byte
fmt.Printf("%v, %T\n", c, c) // 0, uint8
}