2015-11-04 136 views
0

我有這樣的XML閱讀器的結構:在golang是什麼`something`意味着

type Recurlyservers struct { 
    XMLName  xml.Name `xml:"servers"` 
    Version  string `xml: "version,attr"` 
    Svs   []server `xml: "server"` 
    Description string `xml:",innerxml"` 
} 

這是什麼xml:"servers"xml: "version,attr"的含義是什麼?我不知道這是什麼。我想在谷歌搜索,但我不知道它的名字。它是什麼?我可以使用標準的結構嗎?因爲沒有這個,XML閱讀不能工作。

+0

請參閱:http://stackoverflow.com/questions/11475917/strange-type-definition-syntax-in-golang-name-then-type-then-string-literal - 反引號讓你做原始字符串文字並且這些字符串是一個「標籤」 –

+0

另請參閱[Go中標籤有什麼用途?](http://stackoverflow.com/questions/10858787/what-are-the-uses-for-tags- in-go) – icza

回答

5

這些被稱爲字段標籤。它們被xml編碼器/解碼器用來將屬性名稱映射到實際數據中的值。在你的例子中,它們是完全必要的,因爲XML中的字段是較低的,Go中有一個輸出結構的字段,它們必須是上層結構。由於xml名稱與您的類型中的字段名稱不同,因此您必須指定編碼包的位置。

從幾乎所有的數據轉換/編碼/存儲庫中使用這種相同的約定。

+2

Docs:https://golang.org/pkg/reflect/#StructTag - 由'encoding/json'和'encoding/xml'包(等等)調用。 – elithrar