reflection - Reflexión de Golang: Obtener etiqueta del campo struct
(1)
No es necesario que pase toda la estructura, pero pasar el valor de uno de los campos no es suficiente. En su ejemplo, user.name
es solo una string
: el paquete user.name
no tendrá forma de correlacionarlo con la estructura original.
En su lugar, debe pasar el campo reflect.StructField
para el campo dado:
field, ok := reflect.TypeOf(user).Elem().FieldByName("name")
…
tag = string(field.Tag)
Ver http://play.golang.org/p/G6wxUVVbOw
(nota, usamos Elem
arriba porque el user
es un puntero a una estructura).
¿Es posible reflexionar sobre un campo de una estructura y obtener una referencia a sus valores de etiqueta?
Por ejemplo:
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
}
Por lo que puedo ver, la forma habitual de hacerlo es extenderse sobre typ.NumField () y luego llamar a field.Tag.Get ("tagname"). Sin embargo, en mi caso de uso, sería mucho mejor no tener que pasar toda la estructura. ¿Alguna idea?