首頁 > 後端開發 > Golang > go語言如何初始化結構體的成員變數

go語言如何初始化結構體的成員變數

青灯夜游
發布: 2021-06-07 15:31:21
原創
3375 人瀏覽過

初始化方法:1、使用「ins := 結構體類型名稱{字段1:值,字段2:值,…}」語句初始化,適合選擇性填充字段較多的結構體;2、使用「ins := 結構體類型名稱{字段1的值,字段2的值,…}」語句初始化,適合填充字段較少的結構體。

go語言如何初始化結構體的成員變數

本教學操作環境: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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板