Golang Reflection:从struct字段获取标签

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

例如:

  1. type User struct {
  2. name string `json:name-field`
  3. age int
  4. }
  5. ...
  6. user := &User{"John Doe The Fourth",20}
  7. getStructTag(user.name)
  8. ...
  9. func getStructTag(i interface{}) string{
  10. //get tag from field
  11.  
  12. }

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

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

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

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

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

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

猜你在找的Go相关文章