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

網站建設哪家好,找創(chuàng)新互聯(lián)!專注于網頁設計、網站建設、微信開發(fā)、小程序定制開發(fā)、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了前鋒免費建站歡迎大家使用!
車輛結構的組裝和初始化:
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 行定義車輪結構。
- 第 11 行定義引擎結構。
- 第 17 行定義車結構,由車輪和引擎結構體嵌入。
- 第 27 行,將 Car 的 Wheel 字段使用 Wheel 結構體進行初始化。
- 第 32 行,將 Car 的 Engine 字段使用 Engine 結構體進行初始化。
初始化內嵌匿名結構體
在前面描述車輛和引擎的例子中,有時考慮編寫代碼的便利性,會將結構體直接定義在嵌入的結構體中。也就是說,結構體的定義不會被外部引用到。在初始化這個被嵌入的結構體時,就需要再次聲明結構才能賦予數據。具體請參考下面的代碼。
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 結構體被直接定義在 Car 的結構體中。這種嵌入的寫法就是將原來的結構體類型轉換為 struct{…}。
- 第 30 行,需要對 Car 的 Engine 字段進行初始化,由于 Engine 字段的類型并沒有被單獨定義,因此在初始化其字段時需要先填寫 struct{…} 聲明其類型。
- 第 3行開始填充這個匿名結構體的數據,按“鍵:值”格式填充。
文章標題:創(chuàng)新互聯(lián)GO教程:Go語言初始化內嵌結構體
轉載來源:http://m.5511xx.com/article/cdjhsis.html


咨詢
建站咨詢
