zhcn 编程语言 Golang Golang 流程控制 非公開: Go语言初始化嵌入结构

Go语言初始化嵌入结构

初始化嵌入结构体时,与普通结构体一样,将结构体嵌入的类型初始化为字段名,但详细实现步骤请参考下面的代码。

组装并初始化车辆结构:

 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言語のプログラミング初心者向けの超入門講座【文字書き起こし、ソースコードも完全無料!】
https://www.youtube.com/watch?v=kPXfMFJ0oIE&pp=ygU6IEdvIOiogOiqnuOBr-Wfi-OCgei-vOOBv-ani-mAoOOCkuWIneacn-WMluOBl-OBvuOBmSZobD1KQQ%3D%3D
GO言語でAPI開発「 gRPC 」入門
https://www.youtube.com/watch?v=vliAVKYELy8&pp=ygU6IEdvIOiogOiqnuOBr-Wfi-OCgei-vOOBv-ani-mAoOOCkuWIneacn-WMluOBl-OBvuOBmSZobD1KQQ%3D%3D
初始化嵌入结构体时,与普通结构体一样,将结构体嵌入的类型初始化为字段名,但详细实现步骤请参考下面的代码。

组装并初始化车辆结构:

 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言語のプログラミング初心者向けの超入門講座【文字書き起こし、ソースコードも完全無料!】
https://www.youtube.com/watch?v=kPXfMFJ0oIE&pp=ygU6IEdvIOiogOiqnuOBr-Wfi-OCgei-vOOBv-ani-mAoOOCkuWIneacn-WMluOBl-OBvuOBmSZobD1KQQ%3D%3D
GO言語でAPI開発「 gRPC 」入門
https://www.youtube.com/watch?v=vliAVKYELy8&pp=ygU6IEdvIOiogOiqnuOBr-Wfi-OCgei-vOOBv-ani-mAoOOCkuWIneacn-WMluOBl-OBvuOBmSZobD1KQQ%3D%3D