golang结构中标签的用途是什么?

时间:2014-04-14 10:10:44

标签: go

我不明白struct标签的意义。我一直在寻找它们,并注意到它们可以与反射包一起使用。但我不知道它们的任何实际用途。

type TagType struct { // tags
    field1 bool   “An important answer”
    field2 string “The name of the thing”
    field3 int    “How much there are”
}

3 个答案:

答案 0 :(得分:8)

标签的使用在很大程度上取决于结构的使用方式。

典型用法是为持久性或序列化添加规范或约束。

例如,当使用JSON parser/encoder时,标签用于指定如何从JSON读取结构或用JSON编写,当默认编码方案(即字段的名称)不是使用。

以下是json包文档中的一些示例:

// Field is ignored by this package.
Field int `json:"-"`

// Field appears in JSON as key "myName".
Field int `json:"myName"`

// Field appears in JSON as key "myName" and
// the field is omitted from the object if its value is empty,
// as defined above.
Field int `json:"myName,omitempty"`

// Field appears in JSON as key "Field" (the default), but
// the field is skipped if empty.
// Note the leading comma.
Field int `json:",omitempty"`

答案 1 :(得分:3)

使用示例是encoding/json中的json编码/解码:

type TagType struct {
    field1 bool `json:"fieldName"`
    field2 string `json:",omitempty"`
}

文档中的更多详细信息:encoding/json

答案 2 :(得分:0)

您还可以如下所示使用XML结构标记

db.test.find({ "date": { $lt: "2014-07-10T00:00:00.000Z" }, "date": { $gt: "2014-07-07T00:00:00.000Z" } })

}