嵌套结构初始化文字

我怎样才能做到这一点:

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

回到顶部