亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang - 將 XML time.Time 編組為 XML 屬性的日期格式

Golang - 將 XML time.Time 編組為 XML 屬性的日期格式

Go
拉莫斯之舞 2022-01-04 13:34:38
我正在嘗試格式化自定義時間類型 Date,它實現了 Marshaler 接口,并在編寫為 XML 時簡單地將自身格式化為“2006-01-02”。type Person struct {    ...    DateOfBirth           Date      `xml:"DOB,attr"`    ...}type Date time.Timefunc (d Date) MarshalXML(e *xml.Encoder, start xml.StartElement) error {    dateString := fmt.Sprintf("\"%v\"", time.Time(d).Format("2006-01-02"))        e.EncodeElement(dateString, start)    return nil}我使用這個 SO作為參考,但錯誤 - &xml.UnsupportedTypeError{Type:(*reflect.rtype)} - 被拋出。我錯過了一些東西,有什么想法嗎?
查看完整描述

1 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

您正在實現錯誤的接口。


由于 Date 類型旨在作為屬性進行封送處理(如xml:"DOB,attr"標簽所示),因此它需要實現xml.MarshalerAttr接口:


type MarshalerAttr interface {

    MarshalXMLAttr(name Name) (Attr, error)

}

所以你可能需要添加這樣的代碼:


func (d Date) MarshalXMLAttr(name xml.Name) (xml.Attr, error) {

    dateString := time.Time(d).Format("2006-01-02")    

    attr := xml.Attr {

        name,

        dateString,

    }


    return attr, nil

}

請注意,我從值字符串中刪除了明顯不必要的引號。


查看完整回答
反對 回復 2022-01-04
  • 1 回答
  • 0 關注
  • 294 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號