Maison > développement back-end > Golang > Comment puis-je récupérer un nom de champ Struct à l'aide de Go Reflection ?

Comment puis-je récupérer un nom de champ Struct à l'aide de Go Reflection ?

Barbara Streisand
Libérer: 2024-12-10 14:44:10
original
258 Les gens l'ont consulté

How Can I Retrieve a Struct Field Name Using Go Reflection?

Récupération du nom du champ Struct à l'aide de Reflection

Énoncé du problème :

Considérez le code Golang 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())
}
Copier après la connexion

Dans cet exemple, le code imprime "string", pas "Foo". Comment pouvons-nous récupérer le nom du champ "Foo" en utilisant la réflexion dans ce contexte ?

Réponse :

Pour récupérer le nom du champ, utilisez le Type().Field( 0).Name méthode sur la réflexion.Value. Cette méthode renvoie le nom du type du champ, qui dans ce cas est « Foo ». Le code corrigé suivant le démontre :

fmt.Println(val.Type().Field(0).Name()) // Prints "Foo"
Copier après la connexion

Explication :

La fonction Indirect déréférence le pointeur a. La méthode Type().Field(0) récupère les informations du champ de structure pour le premier champ et Name() extrait le nom du champ. Notez qu'il n'y a aucun moyen de récupérer directement le nom du champ pour un reflet.Value, puisque ces informations sont associées à la structure contenant.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal