2015-11-04 145 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