以下是从 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{...}
- 1 回答
- 0 关注
- 122 浏览
添加回答
举报
0/150
提交
取消