Maison > développement back-end > Golang > Comment accéder aux balises de champ Struct à l'aide du package Reflect de Go ?

Comment accéder aux balises de champ Struct à l'aide du package Reflect de Go ?

DDD
Libérer: 2024-12-16 01:02:09
original
963 Les gens l'ont consulté

How to Access Struct Field Tags Using Go's Reflect Package?

Accès aux balises de champ Struct via le package Reflect de Go

La réflexion sur le champ d'une structure et la récupération de ses valeurs de balise peuvent être réalisées à l'aide du package Reflect de Go. Prenons l'exemple suivant :

type User struct {
    name    string `json:"name-field"`
    age     int
}

// ...

user := &User{"John Doe The Fourth", 20}
getStructTag(user.name) // How to obtain the tag value here?
Copier après la connexion

SOLUTION

Il n'est pas nécessaire de transmettre l'intégralité de la structure à getStructTag. Au lieu de cela, nous pouvons utiliser la fonction reflect.TypeOf pour obtenir le type de la structure et la méthode Elem pour récupérer le type de valeur sous-jacent. Nous utilisons ensuite FieldByName pour accéder au champ de structure souhaité.

field, ok := reflect.TypeOf(user).Elem().FieldByName("name")
if !ok {
    // Handle error
}

tag := string(field.Tag)
Copier après la connexion

Dans ce cas, nous utilisons Elem car l'utilisateur est un pointeur vers une structure. En accédant au champ FieldByName, on peut obtenir directement le reflet.StructField correspondant au champ "name". L'attribut Tag du champ acquis permet d'accéder à la valeur du tag.

DÉMONSTRATION

Un exemple interactif de cette technique peut être trouvé au lien suivant : [Réflexion sur une balise de champ Struct](https://play.golang.org/p/_M9Q-r1fuzq).

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal