Go 中Time.Time 欄位的自訂XML 解析
將XML 資料解組到Go 結構體時,您可能會遇到這樣的情況:日期欄位格式與預設time.Time 格式不同,導致解組錯誤。此問題深入研究了在解組過程中可用於指定自訂日期格式的選項。
問題源自於 time.Time 未實作 xml.Unmarshaler 接口,從而阻止您指定自訂日期格式。作為解決方案,您可以建立一個具有匿名 time.Time 欄位的包裝結構,並使用所需的日期格式實作您自己的 UnmarshalXML 方法。
type Transaction struct { //... DateEntered customTime `xml:"enterdate"` // use your own type that satisfies UnmarshalXML //... } type customTime struct { time.Time } func (c *customTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { const shortForm = "20060102" // yyyymmdd date format var v string d.DecodeElement(&v, &start) parse, err := time.Parse(shortForm, v) if err != nil { return err } *c = customTime{parse} return nil }
此方法可讓您使用自訂日期格式解組 XML 文件同時保持類型安全。如果日期儲存為屬性,則可以透過實作 UnmarshalXMLAttr 來使用類似的方法。範例實作位於 http://play.golang.org/p/EFXZNsjE4a。
以上是如何解析 Go XML 中的自訂 Time.Time 欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!