1 回答
TA贡献1829条经验 获得超7个赞
您可以将DataRequest和AckRequest作为指针嵌入到Request结构中。这样您可以稍后检查它们是否存在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)
}
数据&{版本:1 确认:0xc0000b6050 数据:}
数据 &{AckId:1}
- 1 回答
- 0 关注
- 143 浏览
添加回答
举报