golang的結構體是什麼?

golang的結構體是什麼?

結構體類型不僅可以關聯方法,而且可以有內置元素(又稱字段)。結構體類型的聲

明一般以關鍵字type開始,並依次包含類型名稱、關鍵字struct以及由花括號包裹的字

//用於表示針對中文的演示級聊天機器人
type simplecN struct{
name string
talk Talk
}

結構體類型中的每個字段聲明都需獨佔一行。一般情況下,字段聲明需由字段名稱

和表示字段類型的字面量組成。

還有一種只有類型字面量的無名稱字段,稱為嵌入字段。雖然嵌入字段可以用來無

縫集成額外字段和方法,但是其嵌入規則和使用規則都比較複雜。為了保持清晰和簡單,

通常不建議使用嵌入字段,因此這裡不作說明。

golang的結構體是什麼?

結構體類型的值一般由複合字面量來表達。複合字面量可以由類型字面量和由花括

號包裹的鍵值對列表組成。這裡,鍵就是結構體類型中某個字段的名稱,而值(或稱元

素)就是要賦給該字段的那個值。表示結構體值的複合字面量可以簡稱為結構體字面量。

在同一個結構體字面量中,一個字段名稱只能出現一次。例如,這樣是不合法的:

simpleCN{name:"simple.cn",name:"simple.en"}

我們還可以在編寫結構體字面量時忽略字段的名稱,不過這樣做有兩個限制。

要麼忽略掉所有字段的名稱,要麼都不忽略。

多個字段值的順序應該與結構體類型中字段聲明的順序一致,並且不能夠省略對

任何一字段的賦值。例如:simplecN{"simple.cn",ni1)是合法的,而simplecNM{nil,

“simple.cn"}和simplecN{"simple.cn"}就不合法。這種限制對於不忽略字段名稱的寫

法來說是不存在的。在不忽略字段名稱的寫法中,未被明確賦值的字段會自動被

其類型的零值填充。

與數組類型相同,結構體類型屬於值類型,因此結構體類型的零值不是nil。例如,

simplecN的零值就是simplecN{}。

golang的結構體是什麼?


分享到:


相關文章: