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 중국어 웹사이트의 기타 관련 기사를 참조하세요!