是否可以反映结构的字段,并获得对其标记值的引用?
例如:
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")
。
但是,在我的用例中,不必传入整个结构会好得多。
原文由 Jameo 发布,翻译遵循 CC BY-SA 4.0 许可协议
您不需要传递整个结构,但传递其中一个字段的值是不够的。
在您的示例中
user.name
字段只是一个string
反射包将无法将其关联回原始结构。相反,您需要为给定字段传递
reflect.StructField
:注意:我们在上面使用
Elem
因为user
是一个指向结构的指针。你可以在这里玩一个例子。