自定義類型
Go語言通過type關鍵字定義自定義類型。自定義類型是全新的類型。
示例:
// 將newInt定義為int類型
type newInt int
func main() {
var a newInt
a = 100
fmt.Println(a) // 100
fmt.Printf("%T\n", a) // main.newInt
}
上例中的newInt是具有int特性的新類型。可以看到變量a的類型是main.newInt,這表示main包下定義的newInt類型。
類型別名
語法格式:type 別名 = Type
示例:
type tempString = string
func main() {
var s tempString
s = "我是s"
fmt.Println(s) // 我是s
fmt.Printf("%T\n", s) // string
}
例中,tempString是string的別名,其本質上與string是同一個類型。類型別名只會在代碼中存在,編譯完成后不會有如tempString一樣的類型別名。所以變量s的類型是string。
字符類型中的byte和rune就是類型別名:
type byte = uint8
type rune = int32
類型別名這個功能非常有用,鑒於go中有些類型寫起來非常繁瑣,比如json相關的操作中,經常用到map[string]interface {}這種類型,寫起來是不是很繁瑣,沒關系,給它起個簡單的別名!這樣用起來爽多了。
type strMap2Any = map[string]interface {}
