Go에서 속성 및 부동 소수점 값이 있는 XML 요소 역마샬링
제공된 것과 같은 XML 요소를 속성 및 부동 소수점 값으로 역마샬링하려면 부동 소수점 값을 사용하려면 XML 구조에 해당하는 Go 구조체를 정의해야 합니다.
구조체 정의
질문:
첫 번째 정의:
<code class="go">type ThingElem struct { Prop int `xml:"prop,attr"` Value float // ??? } type ThingWrapper struct { T ThingElem `xml:"thing"` }</code>
두 번째 정의:
<code class="go">type ThingElem struct { XMLName xml.Name `xml:"thing"` // Do I even need this? Prop int `xml:"prop,attr"` Value float // ??? }</code>
옵션 해결 :
최종 해결 방법:
<code class="go">type Thing struct { Prop int `xml:"prop,attr"` Value float64 `xml:",chardata"` } type Root struct { Things []Thing `xml:"thing"` }</code>
이 솔루션에서 Thing 구조체는 다음을 나타냅니다. 단일 XML 요소이고 Root 구조체는 XML 루트 요소를 역마샬링하기 위한 Thing 구조체 조각을 보유하는 컨테이너입니다.
예제 코드:
<code class="go">package main import ( "encoding/xml" "fmt" ) const xmlData = ` <root> <thing prop="1">1.23</thing> <thing prop="2">4.56</thing> </root> ` func main() { root := &Root{} if err := xml.Unmarshal([]byte(xmlData), root); err != nil { fmt.Println(err) return } fmt.Println(root.Things) }</code>
이 코드는 부동 소수점 값에서 공백을 제거하는 것을 포함하여 XML 요소를 Go 구조체로 역마샬링하는 방법을 보여줍니다.
위 내용은 Go에서 속성과 부동 소수점 값을 사용하여 XML 요소를 역마샬링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!