結構體類型不僅可以關聯方法,而且可以有內置元素(又稱字段)。結構體類型的聲
明一般以關鍵字type開始,並依次包含類型名稱、關鍵字struct以及由花括號包裹的字
//用於表示針對中文的演示級聊天機器人
type simplecN struct{
name string
talk Talk
}
結構體類型中的每個字段聲明都需獨佔一行。一般情況下,字段聲明需由字段名稱
和表示字段類型的字面量組成。
還有一種只有類型字面量的無名稱字段,稱為嵌入字段。雖然嵌入字段可以用來無
縫集成額外字段和方法,但是其嵌入規則和使用規則都比較複雜。為了保持清晰和簡單,
通常不建議使用嵌入字段,因此這裡不作說明。
結構體類型的值一般由複合字面量來表達。複合字面量可以由類型字面量和由花括
號包裹的鍵值對列表組成。這裡,鍵就是結構體類型中某個字段的名稱,而值(或稱元
素)就是要賦給該字段的那個值。表示結構體值的複合字面量可以簡稱為結構體字面量。
在同一個結構體字面量中,一個字段名稱只能出現一次。例如,這樣是不合法的:
simpleCN{name:"simple.cn",name:"simple.en"}
我們還可以在編寫結構體字面量時忽略字段的名稱,不過這樣做有兩個限制。
要麼忽略掉所有字段的名稱,要麼都不忽略。
多個字段值的順序應該與結構體類型中字段聲明的順序一致,並且不能夠省略對
任何一字段的賦值。例如:simplecN{"simple.cn",ni1)是合法的,而simplecNM{nil,
“simple.cn"}和simplecN{"simple.cn"}就不合法。這種限制對於不忽略字段名稱的寫
法來說是不存在的。在不忽略字段名稱的寫法中,未被明確賦值的字段會自動被
其類型的零值填充。
與數組類型相同,結構體類型屬於值類型,因此結構體類型的零值不是nil。例如,
simplecN的零值就是simplecN{}。
閱讀更多 80後老程序員 的文章