9.20Go之初始化内嵌结构体

9.20Go之初始化内嵌结构体

内嵌结构体的初始化方法

结构体内嵌初始化时,将结构体内嵌的类型作为字段名像普通结构体一样进行初始化

类似匿名结构体的初始化方法,可以选择具体需要初始化的成员:

示例代码:

package main

import "fmt"

/*
定义三个结构体
*/
type Wheel struct {
   Size int
}

type Engine struct {
   Power int //功率
   Type string //类型
}

//结构体:车
type Car struct {
   //内嵌结构体
   Wheel
   Engine
}

func main() {
   //初始化结构体Car同时初始化内嵌的结构体
   c := Car{
       //吃实话内嵌的结构体,视内嵌的结构体为成员进行初始化
       Wheel:Wheel{
           Size: 18,
      },
       //初始化另一个内嵌结构体,视为成员
       Engine:Engine{
           Power: 100,
           //可以选择成员进行初始化
      },
  }

   //打印c
   fmt.Println(c)
}

初始化内嵌匿名结构体

package main

import "fmt"

type WheelNo2 struct {
   size int
}

/*
该结构体内内嵌一个匿名结构体
*/
type CarNo2 struct {
   WheelNo2
   //引擎
   EngineNo2 struct{
       Power int
       Type string
  }
}

func main() {
   //初始化最外层结构体变量
   c := CarNo2{
       WheelNo2:WheelNo2{
           22,
      },
       //因为EngineNo2是匿名内嵌结构体,所以使用初始化匿名结构体的方法
       EngineNo2: struct {
           Power int
           Type  string
      }{Power: 100, Type: "大功率"},
  }

   fmt.Println(c)
}

 

posted @ 2021-09-20 20:03  俊king  阅读(95)  评论(0)    收藏  举报