如果我有一个结构,我希望能够使用(使用encoding/xml)进出xml的Marhsal/Unmarshal内容 - 我怎么能不打印空的属性?
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))
}
Run Code Online (Sandbox Code Playgroud)
例如,请参阅http://play.golang.org/p/K9zFsuL1Cw
在上面的操场上,我不想写出我的空街道属性; 我怎么能这样做?
omitempty在street字段上使用标志.
来自Go XML包:
- 如果字段值为空,则省略包含"omitempty"选项的标记的字段.空值为false,0,任何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))
}
Run Code Online (Sandbox Code Playgroud)