我怎样才能做到这一点:
type A struct {
MemberA string
}
type B struct {
A
MemberB string
}
...
b := B {
MemberA: "test1",
MemberB: "test2",
}
fmt.Printf("%+v\n", b)
给出的编译结果为:“结构文字中的未知B字段'MemberA'”
当提供像这样的文字结构成员值时,如何初始化MemberA(从“父”结构)?
最佳答案
初始化时,匿名结构仅在其类型名称下(在您的情况下为A
)才知道。
与该结构关联的成员和函数仅在
实例存在。
您必须提供A
的有效实例才能初始化MemberA
:
b := B {
A: A{MemberA: "test1"},
MemberB: "test2",
}
编译错误
确切地说:没有
MemberA
,因为它仍然在A
中,而不在B
中。实际上,B
永远不会有MemberA
,它将始终保留在A
中。能够访问MemberA
B
实例上的语法只是糖。