reflection struct go

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?