天天看點

【Golang】Go語言自定義類型和類型别名

自定義類型

在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

類型。