time.Time 필드를 사용하여 Go에서 사용자 정의 XML 날짜 구문 분석
Golang은 XML 데이터를 사용자 정의 구조체로 역마샬링할 수 있는 유연성을 제공하지만 그렇지 않습니다. XML을 역마샬링할 때 time.Time 필드에 대한 사용자 정의 날짜 형식 지정을 지원하지 않습니다. 반환된 날짜 형식이 기본 Go 형식과 다를 때 구문 분석 오류가 발생할 수 있습니다.
CustomUnmarshaler 솔루션
이 제한을 극복하려면 다음을 사용하여 사용자 정의 구조체를 생성할 수 있습니다. 익명의 time.Time 필드를 만들고 자신만의 UnmarshalXML 메서드를 구현하세요. 이 방법은 사용자 정의 형식을 사용하여 날짜 문자열을 구문 분석하고 이에 따라 time.Time 필드를 설정합니다.
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 }
사용자 정의 구조체 통합
트랜잭션 구조체를 다음으로 업데이트합니다. 사용자 정의 시간 필드 포함:
type Transaction struct { //... DateEntered customTime `xml:"enterdate"` //... }
이제 XML 역정렬화는 customTime 구조체를 사용하고 정의된 형식에 따라 날짜 문자열을 구문 분석합니다.
추가 참고 사항
XML 요소가 날짜에 대한 속성을 사용하는 경우 동일한 방식으로 UnmarshalXMLAttr을 구현해야 합니다. 지침은 제공된 코드 조각의 예를 참조하세요.
위 내용은 XML을 비정렬화할 때 Go의 time.Time 필드에 대한 날짜 구문 분석을 사용자 정의하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!