我正在 Go 中開(kāi)發(fā)一個(gè) twilio 電話服務(wù)器,并且有一些引用要生成的 xml 的結(jié)構(gòu)。例如:type Say struct { XMLName xml.Name `xml:"Say"` Text string `xml:",chardata"`}type Response struct { XMLName xml.Name `xml:"Response"` Says []Say `xml:",omitempty"`}當(dāng) Says 數(shù)組填充兩個(gè)包含“Something”和“Something else”的 Say 結(jié)構(gòu)時(shí),會(huì)生成:<Response> <Say>Something</Say> <Say>Something else</Say></Response>但在大聲說(shuō)出“某事”之后,就沒(méi)有停頓,緊接著就出現(xiàn)了“其他事”。twilio 為此創(chuàng)建了一個(gè)暫停標(biāo)簽,讓它暫停一秒鐘。所以我想要的是生成這樣的 xml:<Response> <Say>Something</Say> <Pause></Pause> <Say>Something else</Say> <Pause></Pause></Response>但這如何在 go 結(jié)構(gòu)中表示呢?如何擠入額外的 Pause 標(biāo)簽作為 Say 標(biāo)簽的同級(jí)標(biāo)簽?type Say struct { XMLName xml.Name `xml:"Say"` Text string `xml:",chardata"` ???? Pause `xml:Pause,sibling?????`}type Response struct { XMLName xml.Name `xml:"Response"` Says []Say `xml:",omitempty"`}
1 回答

慕萊塢森
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
找到了使用接口的解決方案
type Say struct {
XMLName xml.Name `xml:"Say"`
Text string `xml:",chardata"`
}
type Response struct {
XMLName xml.Name `xml:"Response"`
Says []interface{}
}
缺少實(shí)際類型名稱不會(huì)生成“Says”標(biāo)簽。
var r Response
r.Says = append(r.Says, Say { Text: "hello"})
- 1 回答
- 0 關(guān)注
- 161 瀏覽
添加回答
舉報(bào)
0/150
提交
取消