初始化方法:1、使用「ins := 結構體類型名稱{字段1:值,字段2:值,…}」語句初始化,適合選擇性填充字段較多的結構體;2、使用「ins := 結構體類型名稱{字段1的值,字段2的值,…}」語句初始化,適合填充字段較少的結構體。
本教學操作環境:windows10系統、GO 1.11.2、Dell G3電腦。
結構體在實例化時可以直接對成員變數進行初始化,初始化有兩種形式分別是以字段「鍵值對」形式和多個值的列表形式,鍵值對形式的初始化適合選擇性填充字段較多的結構體,多個值的列表形式適合填充字段較少的結構體。
使用「鍵值對」初始化結構體
#結構體可以使用「鍵值對」(Key value pair)初始化字段,每個「鍵」(Key)對應結構體中的一個字段,鍵的「值」(Value)對應字段需要初始化的值。
鍵值對的填充是可選的,不需要初始化的欄位可以不填入初始化清單中。
結構體實例化後欄位的預設值是欄位類型的預設值,例如 ,數值為 0、字串為 ""(空字串)、布林為 false、指標為 nil 等。
1) 鍵值對初始化結構體的書寫格式
鍵值對初始化的格式如下:
ins := 结构体类型名{ 字段1: 字段1的值, 字段2: 字段2的值, … }
下面是對各個部分的說明:
結構體型別:定義結構體時的型別名稱。
欄位1、欄位2:結構體成員的欄位名,結構體型別名的欄位初始化清單中,欄位名稱只能出現一次。
欄位1的值、欄位2的值:結構體成員欄位的初始值。
鍵值之間以:
分隔,鍵值對之間以,
分隔。
2) 使用鍵值對填滿結構體的例子
下面範例中描述了家裡的人物關聯,正如兒歌裡唱的:「爸爸的爸爸是爺爺”,人物之間可以使用多級的child 來描述和建立關聯,使用鍵值對形式填充結構體的代碼如下:
type People struct { name string child *People } relation := &People{ name: "爷爷", child: &People{ name: "爸爸", child: &People{ name: "我", }, }, }
代碼說明如下:
第1 行,定義People 結構體。
第 2 行,結構體的字串欄位。
第 3 行,結構體的結構體指標字段,類型是 *People。
第 6 行,relation 由 People 型別取位址後,形成型別為 *People 的實例。
第 8 行,child 在初始化時,需要 *People 類型的值,並使用取位址初始化一個 People。
提示:結構體成員中只能包含結構體的指標類型,包含非指標類型會造成編譯錯誤。
使用多個值的列表初始化結構體
#Go語言可以在“鍵值對”初始化的基礎上忽略“鍵” ,也就是說,可以使用多個值的列表來初始化結構體的欄位。
1) 多個值列表初始化結構體的書寫格式
多個值使用逗號分隔初始化結構體,例如:
ins := 结构体类型名{ 字段1的值, 字段2的值, … }
使用這種格式初始化時,需要注意:
必須初始化結構體的所有欄位。
每一個初始值的填滿順序必須與結構體中欄位的宣告順序一致。
鍵值對與值列表的初始化形式不能混用。
2) 多個值清單初始化結構體的例子
下面的例子描述了一段位址結構,位址要求有一定的順序,例如:
type Address struct { Province string City string ZipCode int PhoneNumber string } addr := Address{ "四川", "成都", 610000, "0", } fmt.Println(addr)
運行程式碼,輸出如下:
{四川 成都 610000 0}
推薦學習:Golang教學
以上是go語言如何初始化結構體的成員變數的詳細內容。更多資訊請關注PHP中文網其他相關文章!