Golang Reflection:从struct字段获取标签

前端之家收集整理的这篇文章主要介绍了Golang Reflection:从struct字段获取标签前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以反映一个结构体的一个字段,并获得对其标签值的引用?

例如:

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,因为用户是一个指向结构体的指针).

原文链接:https://www.f2er.com/go/186801.html

猜你在找的Go相关文章