为了账号安全,请及时绑定邮箱和手机立即绑定

初始化从 XML 创建的嵌套匿名结构到结构转换器

初始化从 XML 创建的嵌套匿名结构到结构转换器

Go
湖上湖 2022-06-06 17:03:59
以下是从 XML 到 Go 的结构转换的输出type Metadata struct {XMLName     xml.Name `xml:"metadata"`Text        string   `xml:",chardata"`Ns2         string   `xml:"ns2,attr"`PasMetadata struct {    Text        string `xml:",chardata"`    SimpleValue struct {        Text  string `xml:",chardata"`        Entry struct {            Text  string `xml:",chardata"`            Key   string `xml:"key"`            Value string `xml:"value"`        } `xml:"entry"`    } `xml:"simple_value"`} `xml:"pas_metadata"`}但基于嵌套匿名结构的建议创建了其他结构如下    type PasMetadata struct {    Text        string `xml:",chardata"`    SimpleValue `xml:"simple_value"`}type SimpleValue struct {    Text  string `xml:",chardata"`    Entry `xml:"entry"`}type Entry struct {    Text  string `xml:",chardata"`    Key   string `xml:"key"`    Value string `xml:"value"`}type Metadata struct {    XMLName     xml.Name `xml:"metadata"`    Text        string   `xml:",chardata"`    Ns2         string   `xml:"ns2,attr"`    PasMetadata `xml:"pas_metadata"`}现在使用以下语句进行初始化时出错metinfo := Metadata{Ns2: "http://test.com", PasMetadata{SimpleValue{Entry{Key: "testcode", Value: "testvalue"}}}}错误是:field:value 和 value 初始值设定项的混合
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

嵌入式结构的初始化类似于常规结构,请参阅复合文字。如果指定字段名称,则必须指定所有字段。

对于嵌入结构,字段名称是嵌入类型的名称。

所以你的复合文字变成:

metinfo := Metadata{Ns2: "http://test.com", PasMetadata: PasMetadata{SimpleValue: SimpleValue{Entry: Entry{Key: "testcode", Value: "testvalue"}}}}

与您的不同之处在于始终设置字段名称。具体来说:

  • PasMetadata: PasMetadata{...}

  • SimpleValue: SimpleValue{...}

  • Entry: Entry{...}


查看完整回答
反对 回复 2022-06-06
  • 1 回答
  • 0 关注
  • 122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信