区分开自定义类型和类型别名之间的不同,在什么场景下用自定义类型,什么场景下用类型别名。
自定义类型
Go语言通过type关键字定义自定义类型。自定义类型是全新的类型。
|
|
上例中的newInt
是具有int
特性的新类型。可以看到变量a的类型是main.newInt
,这表示main
包下定义的newInt
类型。
类型别名
语法格式:type 别名 = Type
示例:
|
|
例中,tempString
是string
的别名,其本质上与string
是同一个类型。类型别名只会在代码中存在,编译完成后不会有如tempString
一样的类型别名。所以变量s的类型是string
。
字符类型中的byte
和rune
就是类型别名:
|
|
类型别名这个功能非常有用,鉴于go中有些类型写起来非常繁琐,比如json相关的操作中,经常用到map[string]interface {}这种类型,写起来是不是很繁琐,没关系,给它起个简单的别名!这样用起来爽多了。
|
|