Go 通過類型別名(alias types)和結(jié)構(gòu)體的形式支持用戶自定義類型,或者叫定制類型。一個帶屬性的結(jié)構(gòu)體試圖表示一個現(xiàn)實世界中的實體。結(jié)構(gòu)體是復(fù)合類型(composite types),當(dāng)需要定義一個類型,它由一系列屬性組成,每個屬性都有自己的類型和值的時候,就應(yīng)該使用結(jié)構(gòu)體,它把數(shù)據(jù)聚集在一起。然后可以訪問這些數(shù)據(jù),就好像它是一個獨立實體的一部分。結(jié)構(gòu)體也是值類型,因此可以通過 new 函數(shù)來創(chuàng)建。
組成結(jié)構(gòu)體類型的那些數(shù)據(jù)稱為 字段(fields)。每個字段都有一個類型和一個名字;在一個結(jié)構(gòu)體中,字段名字必須是唯一的。
結(jié)構(gòu)體的概念在軟件工程上舊的術(shù)語叫 ADT(抽象數(shù)據(jù)類型:Abstract Data Type),在一些老的編程語言中叫 記錄(Record),比如 Cobol,在 C 家族的編程語言中它也存在,并且名字也是 struct,在面向?qū)ο蟮木幊陶Z言中,跟一個無方法的輕量級類一樣。不過因為 Go 語言中沒有類的概念,因此在 Go 中結(jié)構(gòu)體有著更為重要的地位。