是否可以在结构的某个字段上进行反射,并获得对其标记值的引用?
例如:
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
字段中,只是string
-反射包将无法将其与原始结构相关联。
相反,您需要传递reflect.StructField
给定字段的:
field, ok := reflect.TypeOf(user).Elem().FieldByName("name")
…
tag = string(field.Tag)
注意:我们使用Elem
上面的因为user
是指向结构的指针。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句