嵌套结构初始化文字
我怎样才能做到这一点:
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",
}
编译错误
结构文字中的未知B字段’MemberA’
确切地说:没有,MemberA
因为它仍然存在,A
而不是在其中B
。实际上,
B
永远不会MemberA
,它将永远存在A
。能够访问MemberA
的实例B
只是语法糖。
以上是 嵌套结构初始化文字 的全部内容, 来源链接: utcz.com/qa/411654.html