我怎样才能做到这一点:
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
您必须提供一个有效的实例A来初始化MemberA:
MemberA
b := B { A: A{MemberA: "test1"}, MemberB: "test2", }
编译错误
结构文字中的未知B字段’MemberA’
确切地说:没有,MemberA因为它仍然存在,A而不是在其中B。实际上, B永远不会MemberA,它将永远存在A。能够访问MemberA 的实例B只是语法糖。
B