溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在go語言中初始化結構體的成員變量

發布時間:2021-06-07 18:13:21 來源:億速云 閱讀:296 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關怎么在go語言中初始化結構體的成員變量,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

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

結構體在實例化時可以直接對成員變量進行初始化,初始化有兩種形式分別是以字段“鍵值對”形式和多個值的列表形式,鍵值對形式的初始化適合選擇性填充字段較多的結構體,多個值的列表形式適合填充字段較少的結構體。

使用“鍵值對”初始化結構體

結構體可以使用“鍵值對”(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}

以上就是怎么在go語言中初始化結構體的成員變量,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女