使用字段引用初始化嵌套结构
任务是在设置属于父结构的字段时使用文字值初始化嵌套结构。下面是一个示例:
type A struct { MemberA string } type B struct { A MemberB string }
尝试直接在结构体文字中初始化 MemberA,如下所示,将会失败:
b := B { MemberA: "test1", MemberB: "test2", } fmt.Printf("%+v\n", b)
这会导致错误:“未知 B 字段 '结构体文字中的 MemberA'。”
要正确初始化 MemberA,您必须提供父结构体的有效实例, A,如以下代码所示:
b := B { A: A{MemberA: "test1"}, // Initialize the parent struct instance MemberB: "test2", }
编译器错误消息“unknown B field 'MemberA' in structliteral”表明MemberA不是B的直接已知字段。相反,它属于嵌入式A类型。初始化 B 结构体时,匿名 A 实例仅在类型名称 A 下为人所知,并且其成员在创建之前在实例外部不可见。
以上是如何使用字段引用初始化 Go 中的嵌套结构体字段?的详细内容。更多信息请关注PHP中文网其他相关文章!