自定義類型
在Go語言中有一些基本的資料類型,如
string
、
整型
、
浮點型
、
布爾
等資料類型, Go語言中可以使用
type
關鍵字來定義自定義類型。
自定義類型是定義了一個全新的類型。我們可以基于内置的基本類型定義,也可以通過struct定義。例如:
//将MyInt定義為int類型
type MyInt int
通過
type
關鍵字的定義,
MyInt
就是一種新的類型,它具有
int
的特性。
類型别名
類型别名是
Go1.9
版本添加的新功能。
類型别名規定:TypeAlias隻是Type的别名,本質上TypeAlias與Type是同一個類型。
type TypeAlias = Type
Go語言中的
rune
和
byte
就屬于類型别名,他們的定義如下:
type byte = uint8
type rune = int32
類型定義和類型别名的差別
類型别名與類型定義表面上看隻有一個等号的差異,我們通過下面的這段代碼來了解它們之間的差別。
//類型定義
type NewInt int
//類型别名
type MyInt = int
func main() {
var a NewInt
var b MyInt
fmt.Printf("type of a:%T\n", a) //type of a:main.NewInt
fmt.Printf("type of b:%T\n", b) //type of b:int
}
結果顯示a的類型是
main.NewInt
,表示main包下定義的
NewInt
類型。b的類型是
int
。
MyInt
類型隻會在代碼中存在,編譯完成時并不會有
MyInt
類型。