为类型定义别名

  1. type myInt = int
  2. var a myInt
  3. fmt.Printf("%T\n", a) // 结果:int

这里的type只是为int定义了一个别名myInt,本质上还是int

基于一个已有的类型定义一个新的类型

  1. type myFloat64 float64 // 只是比上面那种少了个等号
  2. var b myFloat64
  3. fmt.Printf("%T\n", b) // 结果:main.myFloat64

这里确确实实是定义了一个新的类型,只不过这个类型的底层实现和float64完全一样。

定义结构体

  1. type Student struct {}

定义接口

  1. type Callable interface {}

为函数定义别名

  1. type handle func(i int)