Kir*_*ril 3 xml format marshalling go
当我编组float64到xml文件时:
type X struct {
Value float64 `xml:",attr,omitempty"`
}
var x X
x.Value = 1000000.04
Run Code Online (Sandbox Code Playgroud)
我得到的价值如下:
<X Value="1.00000004e+06"></X>
Run Code Online (Sandbox Code Playgroud)
如何更改输出格式,以便写入完整值(1000000.04)(omitempty标签仍然有效)?
您可以创建自己的数字类型,以您喜欢的方式进行编组:
type prettyFloat float64
func (f prettyFloat) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
s := fmt.Sprintf("%.2f", f)
return xml.Attr{Name: name, Value: s}, nil
}
Run Code Online (Sandbox Code Playgroud)
游乐场:http://play.golang.org/p/2moWdAwXrd.
编辑: ,omitempty版本:
type prettyFloat float64
func (f prettyFloat) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {
if f == 0 {
return xml.Attr{}, nil
}
s := fmt.Sprintf("%.2f", f)
return xml.Attr{Name: name, Value: s}, nil
}
Run Code Online (Sandbox Code Playgroud)
游乐场:http://play.golang.org/p/myBrjGGSJY.
| 归档时间: |
|
| 查看次数: |
715 次 |
| 最近记录: |