溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在go語(yǔ)言中初始化結(jié)構(gòu)體的成員變量

發(fā)布時(shí)間:2022-04-15 14:09:37 來(lái)源:億速云 閱讀:176 作者:iii 欄目:編程語(yǔ)言

本文小編為大家詳細(xì)介紹“如何在go語(yǔ)言中初始化結(jié)構(gòu)體的成員變量”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“如何在go語(yǔ)言中初始化結(jié)構(gòu)體的成員變量”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

初始化方法:1、使用“ins := 結(jié)構(gòu)體類(lèi)型名{字段1:值,字段2:值,…}”語(yǔ)句初始化,適合選擇性填充字段較多的結(jié)構(gòu)體;2、使用“ins := 結(jié)構(gòu)體類(lèi)型名{字段1的值,字段2的值,…}”語(yǔ)句初始化,適合填充字段較少的結(jié)構(gòu)體。

結(jié)構(gòu)體在實(shí)例化時(shí)可以直接對(duì)成員變量進(jìn)行初始化,初始化有兩種形式分別是以字段“鍵值對(duì)”形式和多個(gè)值的列表形式,鍵值對(duì)形式的初始化適合選擇性填充字段較多的結(jié)構(gòu)體,多個(gè)值的列表形式適合填充字段較少的結(jié)構(gòu)體。

使用“鍵值對(duì)”初始化結(jié)構(gòu)體

結(jié)構(gòu)體可以使用“鍵值對(duì)”(Key value pair)初始化字段,每個(gè)“鍵”(Key)對(duì)應(yīng)結(jié)構(gòu)體中的一個(gè)字段,鍵的“值”(Value)對(duì)應(yīng)字段需要初始化的值。

鍵值對(duì)的填充是可選的,不需要初始化的字段可以不填入初始化列表中。

結(jié)構(gòu)體實(shí)例化后字段的默認(rèn)值是字段類(lèi)型的默認(rèn)值,例如 ,數(shù)值為 0、字符串為 ""(空字符串)、布爾為 false、指針為 nil 等。

1) 鍵值對(duì)初始化結(jié)構(gòu)體的書(shū)寫(xiě)格式

鍵值對(duì)初始化的格式如下:

ins := 結(jié)構(gòu)體類(lèi)型名{
    字段1: 字段1的值,
    字段2: 字段2的值,
    …
}

下面是對(duì)各個(gè)部分的說(shuō)明:

  • 結(jié)構(gòu)體類(lèi)型:定義結(jié)構(gòu)體時(shí)的類(lèi)型名稱。

  • 字段1、字段2:結(jié)構(gòu)體成員的字段名,結(jié)構(gòu)體類(lèi)型名的字段初始化列表中,字段名只能出現(xiàn)一次。

  • 字段1的值、字段2的值:結(jié)構(gòu)體成員字段的初始值。

鍵值之間以:分隔,鍵值對(duì)之間以,分隔。

2) 使用鍵值對(duì)填充結(jié)構(gòu)體的例子

下面示例中描述了家里的人物關(guān)聯(lián),正如兒歌里唱的:“爸爸的爸爸是爺爺”,人物之間可以使用多級(jí)的 child 來(lái)描述和建立關(guān)聯(lián),使用鍵值對(duì)形式填充結(jié)構(gòu)體的代碼如下:

type People struct {
    name  string
    child *People
}
relation := &People{
    name: "爺爺",
    child: &People{
        name: "爸爸",
        child: &People{
                name: "我",
        },
    },
}

代碼說(shuō)明如下:

  • 第 1 行,定義 People 結(jié)構(gòu)體。

  • 第 2 行,結(jié)構(gòu)體的字符串字段。

  • 第 3 行,結(jié)構(gòu)體的結(jié)構(gòu)體指針字段,類(lèi)型是 *People。

  • 第 6 行,relation 由 People 類(lèi)型取地址后,形成類(lèi)型為 *People 的實(shí)例。

  • 第 8 行,child 在初始化時(shí),需要 *People 類(lèi)型的值,使用取地址初始化一個(gè) People。

提示:結(jié)構(gòu)體成員中只能包含結(jié)構(gòu)體的指針類(lèi)型,包含非指針類(lèi)型會(huì)引起編譯錯(cuò)誤。

使用多個(gè)值的列表初始化結(jié)構(gòu)體

Go語(yǔ)言可以在“鍵值對(duì)”初始化的基礎(chǔ)上忽略“鍵”,也就是說(shuō),可以使用多個(gè)值的列表初始化結(jié)構(gòu)體的字段。

1) 多個(gè)值列表初始化結(jié)構(gòu)體的書(shū)寫(xiě)格式

多個(gè)值使用逗號(hào)分隔初始化結(jié)構(gòu)體,例如:

ins := 結(jié)構(gòu)體類(lèi)型名{
    字段1的值,
    字段2的值,
    …
}

使用這種格式初始化時(shí),需要注意:

  • 必須初始化結(jié)構(gòu)體的所有字段。

  • 每一個(gè)初始值的填充順序必須與字段在結(jié)構(gòu)體中的聲明順序一致。

  • 鍵值對(duì)與值列表的初始化形式不能混用。

2) 多個(gè)值列表初始化結(jié)構(gòu)體的例子

下面的例子描述了一段地址結(jié)構(gòu),地址要求具有一定的順序,例如:

type Address struct {
    Province    string
    City        string
    ZipCode     int
    PhoneNumber string
}
addr := Address{
    "四川",
    "成都",
    610000,
    "0",
}
fmt.Println(addr)

運(yùn)行代碼,輸出如下:

{四川 成都 610000 0}

讀到這里,這篇“如何在go語(yǔ)言中初始化結(jié)構(gòu)體的成員變量”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI