Maison >développement back-end >Golang >Comment puis-je récupérer les noms de champs de structure à l'aide de Go Reflection ?
Récupération des noms de champs de structure à l'aide de la réflexion
Dans Golang, la réflexion permet d'accéder à des informations sur la structure et le comportement du programme au moment de l'exécution. Un cas d'utilisation courant consiste à récupérer les noms de champs dans une structure.
Considérons l'exemple suivant :
type A struct { Foo string } func (a *A) PrintFoo() { fmt.Println("Foo value is " + a.Foo) } func main() { a := &A{Foo: "afoo"} val := reflect.Indirect(reflect.ValueOf(a)) fmt.Println(val.Field(0).Type().Name()) // Prints "string" }
L'objectif ici est d'imprimer "Foo" comme nom de champ, mais à la place, il imprime "string". Pour comprendre ce comportement, examinons le code.
Tout d'abord, reflet.Indirect(reflect.ValueOf(a)) convertit le pointeur vers la structure a en un reflet.Value représentant la valeur sous-jacente. val.Field(0) renvoie une réflexion.Value correspondant au premier champ de la structure, qui dans ce cas est Foo.
Cependant, val.Field(0).Type().Name() récupère le type du champ, qui est une chaîne. Le nom du champ lui-même peut être obtenu en utilisant :
fmt.Println(val.Type().Field(0).Name) // Prints "Foo"
En effet, val.Type() donne accès aux informations de type de la structure et le Field(0).Name suivant récupère le nom. du premier champ.
En résumé, pour récupérer le nom d'un champ struct par réflexion, il faut utiliser val.Type().Field(0).Name plutôt que val.Field(0).Type().Name.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!