Maison >développement back-end >Golang >Comment accéder aux balises de champ Struct à l'aide du package Reflect de Go ?
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?
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)
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!