自定義類型
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 {}