go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 结构体标签(struct tag)是结构体字段的额外信息标签
Posted Locutus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 结构体标签(struct tag)是结构体字段的额外信息标签相关的知识,希望对你有一定的参考价值。
- 格式
结构体标签写在结构体字段的后边。结构体标签由一个或多个键值对组成。键与值使用冒号分隔,值用双引号扩起来,键值对之间用一个空格分隔。
`key1:"value1" key2:"value2"`
- 从结构体标签中取值
func(tag structTag) Get(key string) string:
func(tag structTag) Lookup(key string)(value string, ok bool):
- 结构体标签格式错误
package main
import (
"fmt"
"reflect"
)
func main() {
type cat struct {
Name string
Type int `json:"type" id:"110"`
}
// 获取结构体实例的反射类型对象
typeOfCat := reflect.TypeOf(cat{})
// 获取反射类型对象的"Type"字符串的结构体信息
if catType, ok := typeOfCat.FileByName("Type"); ok {
// 使用.Tag.Get获取结构体标签的json键对应值
fmt.Println(catType.Tag.Get("json"))
}
}
如果结构体标签不按格式定义,如下:
Type int `json: "type" id:"110"`
则不能获得对应的结构体标签值。
以上是关于go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 结构体标签(struct tag)是结构体字段的额外信息标签的主要内容,如果未能解决你的问题,请参考以下文章
go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 什么是反射?
go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)
go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 结构体标签(struct tag)是结构体字段的额外信息标签
go语言学习笔记 — 进阶 — 反射:反射的类型对象(reflect.Type)— 反射类型对象的类型名(Type)和种类(Kind)