以下是從 XML 到 Go 的結(jié)構(gòu)轉(zhuǎn)換的輸出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"`}但基于嵌套匿名結(jié)構(gòu)的建議創(chuàng)建了其他結(jié)構(gòu)如下 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"`}現(xiàn)在使用以下語(yǔ)句進(jìn)行初始化時(shí)出錯(cuò)metinfo := Metadata{Ns2: "http://test.com", PasMetadata{SimpleValue{Entry{Key: "testcode", Value: "testvalue"}}}}錯(cuò)誤是:field:value 和 value 初始值設(shè)定項(xiàng)的混合
1 回答

SMILET
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
嵌入式結(jié)構(gòu)的初始化類似于常規(guī)結(jié)構(gòu),請(qǐng)參閱復(fù)合文字。如果指定字段名稱,則必須指定所有字段。
對(duì)于嵌入結(jié)構(gòu),字段名稱是嵌入類型的名稱。
所以你的復(fù)合文字變成:
metinfo := Metadata{Ns2: "http://test.com", PasMetadata: PasMetadata{SimpleValue: SimpleValue{Entry: Entry{Key: "testcode", Value: "testvalue"}}}}
與您的不同之處在于始終設(shè)置字段名稱。具體來(lái)說(shuō):
PasMetadata: PasMetadata{...}
SimpleValue: SimpleValue{...}
Entry: Entry{...}
- 1 回答
- 0 關(guān)注
- 145 瀏覽
添加回答
舉報(bào)
0/150
提交
取消