1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以將DataRequest和AckRequest作為指針嵌入到Request結(jié)構(gòu)中。這樣您可以稍后檢查它們是否存在nil。
// XML: REQUEST.DATA
type DataRequest struct {
LData string `xml:"DATA-L"`
}
// XML: REQUEST.ACK
type AckRequest struct {
AckId int `xml:"ACK-ID"`
}
type Request struct {
Version float32 `xml:"version,attr"`
Ack *AckRequest `xml:"REQUEST.ACK"`
Data *DataRequest `xml:"REQUEST.DATA"`
}
func main() {
message := `<PROTO version="1.00"><REQUEST.ACK><ACK-ID>1</ACK-ID></REQUEST.ACK></PROTO>`
proto := &Request{}
err := xml.Unmarshal([]byte(message), &proto)
if err != nil {
fmt.Printf("error: %v", err)
return
}
// if proto.Ack == nil {
// fmt.Println("Ack is nil")
// }
fmt.Printf("data %+v\n", proto)
fmt.Printf("data %+v\n", proto.Ack)
}
數(shù)據(jù)&{版本:1 確認(rèn):0xc0000b6050 數(shù)據(jù):}
數(shù)據(jù) &{AckId:1}
- 1 回答
- 0 關(guān)注
- 182 瀏覽
添加回答
舉報(bào)