猿问

为父 golang 结构字段赋值

有两种情况:


type A struct {

    A_FIELD  string

}

type B struct {

    A

    B_FIELD  string

}


func main() {

    b := &B{

        A_FIELD: "aaaa_field",

        B_FIELD: "bbbb_field",

    } 

}


type A struct {

    A_FIELD  string

}

type B struct {

    A

    B_FIELD  string

}


func main() {

    b := &B{}

    b.A_FIELD = "aaaa_field"

    b.B_FIELD = "bbbb_field"

    fmt.Printf("Good!")

}

为什么第二个有效,而第一个无效?我收到编译时异常。我应该如何改变第一个工作?


守着一只汪
浏览 180回答 1
1回答

萧十郎

为什么第二个有效,而第一个无效?因为b.A_FIELD = "aaaa_field"实际上是b.A.A_FIELD = "aaaa_field"变相。我应该如何改变第一个工作?func main() {    b := &B{        A: A{            A_FIELD: "aaaa_field",        },        B_FIELD: "bbbb_field",    }}您应该阅读在 Effective Go 中嵌入是如何工作的。
随时随地看视频慕课网APP

相关分类

Go
我要回答