定义了一个结构体,如何获得某个字段的tag 标签值?
使用reflect包即可达到想要的效果,代码如下:
package main
import (
"fmt"
"reflect"
"time"
)
type UserInfo struct {
ID int `json:"id" redis:"id_redis"`
Name string `json:"name" redis:"name_redis"`
Created time.Time `json:"created" redis:"created_redis"`
}
func main() {
var user = &UserInfo{
ID : 1,
Name : "Jack",
}
types := reflect.TypeOf(user)
field1 := types.Elem().Field(0)
field2 := types.Elem().Field(1)
tagName1 := field1.Tag.Get("json") // 获得字段 ID 的json值
tagName2 := field2.Tag.Get("redis") // 获得字段 Name 的redis值
fmt.Println(tagName1, tagName2)
}
// 打印结果:
id name_redis
参考文章:https://studygolang.com/articles/11988?fr=sidebar
reflect包文档:https://studygolang.com/pkgdoc