是否可以反映一个结构体的一个字段,并获得对其标签值的引用?
例如:
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只是一个字符串 – 反射包将无法将其与原始结构相关联.
原文链接:https://www.f2er.com/go/186801.html相反,您需要传递给定字段的reflect.StructField:
field,ok := reflect.TypeOf(user).Elem().FieldByName("name") … tag = string(field.Tag)
见http://play.golang.org/p/G6wxUVVbOw
(注意,我们使用Elem,因为用户是一个指向结构体的指针).