初始化嵌入结构体时,与普通结构体一样,将结构体嵌入的类型初始化为字段名,但详细实现步骤请参考下面的代码。
组装并初始化车辆结构:
package main
import "fmt"
// 車のホイール
type Wheel struct {
Size int // サイズ
}
// 車のエンジン
type Engine struct {
Power int // パワー
Type string // タイプ
}
// 車
type Car struct {
Wheel Wheel // ホイール
Engine 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 // 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 行开始以“key:value”的形式填充此匿名结构的数据。
通俗易懂的讲解《Go语言初始化嵌入结构》!您必须观看的最佳 2 个视频
【たった1時間で学べる】Go言語のプログラミング初心者向けの超入門講座【文字書き起こし、ソースコードも完全無料!】
GO言語でAPI開発「 gRPC 」入門




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

