在 Golang 语言中,我们可以使用反单引号为 Struct 中的字段设置 Tag,通过 Tag 可以为 Struct 中的字段定义附加属性。Tag 实际上就是一个字符串,只不过有特定的格式,也就是说 Tag 字符串必须由 key:"value"组成,key 必须是非空字符串,value 必须由双引号引起来。
公司主营业务:成都网站建设、网站设计、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出梁子湖免费做网站回馈大家。
其中,每个 key 都是一个非空字符串,由除空格 (U+0020 ' ')、引号 (U+0022 '"') 和冒号 (U+003A ':') 以外的非控制字符组成;每个 value 都使用 U+0022 '"' 字符和 Go 字符串语法引用。
示例代码:
- type User struct {
- Id uint64 `json:"id"`
- Name string `json:"name"`
- }
在 Golang 语言中,可以使用标准库 reflect 包操作 Struct 中的 Tag。在 reflect 包中,使用一个 StructField 表示 Struct 中的一个字段。
reflect 包源码:
- type StructField struct {
- Name string
- PkgPath string
- Type Type // field type
- Tag StructTag // field tag string
- Offset uintptr // offset within struct, in bytes
- Index []int // index sequence for Type.FieldByIndex
- Anonymous bool // is an embedded field
- }
阅读上面这段代码,可以看出 Tag 也是 Struct 中的一个字段的组成部分,Tag 的类型是 StructTag,实际上它是一个 string 类型的别名。
- type StructTag string
StructTag 提供了 Get 方法 func (tag StructTag) Get(key string) string,可以通过给定参数 key 获取关联 value 的值。如果 Tag 中没有该 key,Get 返回空字符串。
示例代码:
- func GetTag () {
- u := User{}
- ut := reflect.TypeOf(u)
- for i := 0; i < ut.NumField(); i++ {
- fmt.Printf("字段:%s,标签:%s\n", ut.Field(i).Name, ut.Field(i).Tag.Get("json"))
- }
- }
其实,标准库 json 包转换 struct 为 JSON 字符串也是使用的类似的方法。
本文我们介绍了 Struct 字段中的 Tag 是什么,同时介绍了如何使用标准库 reflect 包操作 Struct 字段中的 Tag,实际上 Tag 只是一个字符串,reflect 包可以通过 Tag 作为参考条件,操作 Struct 字段。关于 reflect 包的更多介绍,感兴趣的读者可以翻阅之前的文章。
本文转载自微信公众号「Golang语言开发栈」,可以通过以下二维码关注。转载本文请联系Golang语言开发栈公众号。
当前文章:Golang 语言 Struct 中字段的 Tag 怎么使用?
本文路径:http://www.mswzjz.com/qtweb/news14/161464.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联