1 回答

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
你的代碼甚至無法編譯。您需要對(duì)循環(huán)內(nèi)的切片進(jìn)行索引,如果不對(duì)其進(jìn)行索引,則無法引用切片元素的字段。而且Record.Controlfield和Record.Datafield不是“相關(guān)的”,用嵌入式循環(huán)處理它們是沒有意義的。
但是,您確實(shí)需要使用嵌套循環(huán)來檢查Subfield其Datafield標(biāo)簽是否匹配。
像這樣的東西:
for i := range record.Datafield {
df := &record.Datafield[i]
if df.Tag == "650" {
for j := range df.Subfield {
if df.Subfield[j].Code == "a" {
fmt.Println("Kind of Music: " + df.Subfield[j].Text)
}
}
}
}
在Go Playground上嘗試一下。
請(qǐng)注意,您for range也可以用來“獲取”給定索引處的元素,但由于您有某種使用匿名結(jié)構(gòu)(而不是指針)的生成結(jié)構(gòu),這樣的循環(huán)將復(fù)制所有元素(因此我仍然使用“手動(dòng)索引”)。
還要檢查所有錯(cuò)誤,例如ioutil.ReadAll(xmlFile)和xml.Unmarshal(data, &record)。
- 1 回答
- 0 關(guān)注
- 169 瀏覽
添加回答
舉報(bào)