定义类型与非定义类型
在类型定义声明中定义的类型为定义类型,所有基本类型和type定义的类型都是定义类型,但是要注意类型别名的情况
type A []string// 是定义类型
type B = A// 是定义类型
type C = []string// 不是定义类型
非定义类型一定是一个组合类型,example:[]string
底层类型
- 基本类型的底层类型是本身
- 类型声明中定义类型与源类型共享底层类型
// 共享相同底层类型int
type (
MyInt int
MyInt1 Myint
)
- 非定义类型的底层类型是本身
隐式转换规则
- 如果两个类型至少一个为非定义类型且底层类型相同,则转换是隐式的
- 如果两个类型都是非定义的指针类型且基类型