type myInt int32
與type myInt = int32
,概念并不相同
-
自定義類型:
type myInt int32
通過這種方式定義的類型是一個全新的類型,這個新類型與
int32
有相同的底層結構,但是卻與int32
類型不兼容。type myInt int32
var a int32 = 5 var b myInt = a // 這里會產生編譯錯誤
盡管
myInt
的底層類型是int32
,但它們在類型系統中是不同的。 -
類型別名:
type myInt = int32
類型別名則是給現有類型起一個新的名字,新的名字與原始類型在類型系統中是完全相同的。
type myInt = int32
var a int32 = 5 var b myInt = a // 這里不會產生編譯錯誤
這里
myInt
是int32
的別名,所以不會產生任何編譯錯誤。 -
總結
-
自定義類型會創建一個全新的類型,與原始類型在類型系統中是不兼容的。
-
類型別名則只是給現有類型起一個新名字,與原始類型在類型系統中完全相同。
-
自定義類型可用于封裝或抽象,而類型別名則可以用來確保向后兼容或簡化類型名稱。
通過了解這些區別,可以更靈活地使用Go語言的類型系統來滿足各種編程需求。
-