MST

星途 面试题库

面试题:Go语言中结构体嵌套时如何进行初始化

请写出一段Go语言代码,定义两个结构体A和B,B结构体嵌套A结构体,并对嵌套后的结构体B进行初始化,展示出完整的初始化过程和可能的初始化方式。
14.2万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import "fmt"

// 定义结构体A
type A struct {
    Field1 string
    Field2 int
}

// 定义结构体B,嵌套结构体A
type B struct {
    A
    Field3 float64
}

func main() {
    // 方式一:直接初始化
    var b1 B
    b1.Field1 = "value1"
    b1.Field2 = 10
    b1.Field3 = 3.14
    fmt.Printf("b1: %+v\n", b1)

    // 方式二:使用复合字面量初始化
    b2 := B{
        A: A{
            Field1: "value2",
            Field2: 20,
        },
        Field3: 2.718,
    }
    fmt.Printf("b2: %+v\n", b2)

    // 方式三:先初始化A,再初始化B
    a := A{
        Field1: "value3",
        Field2: 30,
    }
    b3 := B{
        A:      a,
        Field3: 1.618,
    }
    fmt.Printf("b3: %+v\n", b3)
}