如果我有一个结构,我希望能够使用(使用encoding / xml)在xml中进出Marhsal / Unmarshal - 我怎样才能不打印空的属性?< / p>
package main
import (
"encoding/xml"
"fmt"
)
type MyThing struct {
XMLName xml.Name `xml:"body"`
Name string `xml:"name,attr"`
Street string `xml:"street,attr"`
}
func main() {
var thing *MyThing = &MyThing{Name: "Canister"}
result, _ := xml.Marshal(thing)
fmt.Println(string(result))
}
例如,请参阅http://play.golang.org/p/K9zFsuL1Cw
在上面的游乐场中,我不想写出空的 street 属性;我怎么能这样做?
答案 0 :(得分:5)
在omitempty
字段上使用street
标记。
- 省略具有包括“omitempty”选项的标签的字段 如果字段值为空。空值为false,0,any nil指针或接口值,以及任何数组,切片,映射或 长度为零的字符串。
如果您的例子:
package main
import (
"encoding/xml"
"fmt"
)
type MyThing struct {
XMLName xml.Name `xml:"body"`
Name string `xml:"name,attr"`
Street string `xml:"street,attr,omitempty"`
}
func main() {
var thing *MyThing = &MyThing{Name: "Canister"}
result, _ := xml.Marshal(thing)
fmt.Println(string(result))
}