新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GO教程:Go語言初始化內(nèi)嵌結(jié)構(gòu)體
結(jié)構(gòu)體內(nèi)嵌初始化時,將結(jié)構(gòu)體內(nèi)嵌的類型作為字段名像普通結(jié)構(gòu)體一樣進(jìn)行初始化,詳細(xì)實現(xiàn)過程請參考下面的代碼。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了前鋒免費(fèi)建站歡迎大家使用!
車輛結(jié)構(gòu)的組裝和初始化:
package main
import "fmt"
// 車輪
type Wheel struct {
Size int
}
// 引擎
type Engine struct {
Power int // 功率
Type string // 類型
}
// 車
type Car struct {
Wheel
Engine
}
func main() {
c := Car{
// 初始化輪子
Wheel: Wheel{
Size: 18,
},
// 初始化引擎
Engine: Engine{
Type: "1.4T",
Power: 143,
},
}
fmt.Printf("%+v\n", c)
}代碼說明如下:
- 第 6 行定義車輪結(jié)構(gòu)。
- 第 11 行定義引擎結(jié)構(gòu)。
- 第 17 行定義車結(jié)構(gòu),由車輪和引擎結(jié)構(gòu)體嵌入。
- 第 27 行,將 Car 的 Wheel 字段使用 Wheel 結(jié)構(gòu)體進(jìn)行初始化。
- 第 32 行,將 Car 的 Engine 字段使用 Engine 結(jié)構(gòu)體進(jìn)行初始化。
初始化內(nèi)嵌匿名結(jié)構(gòu)體
在前面描述車輛和引擎的例子中,有時考慮編寫代碼的便利性,會將結(jié)構(gòu)體直接定義在嵌入的結(jié)構(gòu)體中。也就是說,結(jié)構(gòu)體的定義不會被外部引用到。在初始化這個被嵌入的結(jié)構(gòu)體時,就需要再次聲明結(jié)構(gòu)才能賦予數(shù)據(jù)。具體請參考下面的代碼。
package main
import "fmt"
// 車輪
type Wheel struct {
Size int
}
// 車
type Car struct {
Wheel
// 引擎
Engine struct {
Power int // 功率
Type string // 類型
}
}
func main() {
c := Car{
// 初始化輪子
Wheel: Wheel{
Size: 18,
},
// 初始化引擎
Engine: struct {
Power int
Type string
}{
Type: "1.4T",
Power: 143,
},
}
fmt.Printf("%+v\n", c)
}代碼說明如下:
- 第 14 行中原來的 Engine 結(jié)構(gòu)體被直接定義在 Car 的結(jié)構(gòu)體中。這種嵌入的寫法就是將原來的結(jié)構(gòu)體類型轉(zhuǎn)換為 struct{…}。
- 第 30 行,需要對 Car 的 Engine 字段進(jìn)行初始化,由于 Engine 字段的類型并沒有被單獨定義,因此在初始化其字段時需要先填寫 struct{…} 聲明其類型。
- 第 3行開始填充這個匿名結(jié)構(gòu)體的數(shù)據(jù),按“鍵:值”格式填充。
分享題目:創(chuàng)新互聯(lián)GO教程:Go語言初始化內(nèi)嵌結(jié)構(gòu)體
瀏覽地址:http://fisionsoft.com.cn/article/cdjhsis.html


咨詢
建站咨詢
