加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang Reflection:从struct字段获取标签

发布时间:2020-12-16 19:29:14 所属栏目:大数据 来源:网络整理
导读:是否可以反映一个结构体的一个字段,并获得对其标签值的引用? 例如: type User struct { name string `json:name-field` age int}...user := User{"John Doe The Fourth",20}getStructTag(user.name)...func getStructTag(i interface{}) string{ //get tag
是否可以反映一个结构体的一个字段,并获得对其标签值的引用?

例如:

type User struct {
    name    string `json:name-field`
    age     int
}
...
user := &User{"John Doe The Fourth",20}
getStructTag(user.name)
...
func getStructTag(i interface{}) string{
   //get tag from field

}

从我可以看到,通常的方法是超过typ.NumField(),然后调用field.Tag.Get(“tagname”).然而,在我的用例中,没有必要传递整个结构将会更好.任何想法?

你不需要传递整个结构体,而是传递一个字段的值是不够的.在您的示例中,user.name只是一个字符串 – 反射包将无法将其与原始结构相关联.

相反,您需要传递给定字段的reflect.StructField:

field,ok := reflect.TypeOf(user).Elem().FieldByName("name")
…
tag = string(field.Tag)

见http://play.golang.org/p/G6wxUVVbOw

(注意,我们使用Elem,因为用户是一个指向结构体的指针).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读