Maison > développement back-end > Golang > La réflexion de Go peut-elle récupérer les balises de champ Struct ?

La réflexion de Go peut-elle récupérer les balises de champ Struct ?

Mary-Kate Olsen
Libérer: 2024-12-04 07:43:11
original
811 Les gens l'ont consulté

Can Go's Reflection Retrieve Struct Field Tags?

Réflexion sur les balises de champ de structure dans Go

L'accès aux valeurs des balises de champ via la réflexion permet aux développeurs d'extraire des métadonnées associées à des champs spécifiques d'une structure . Le package Reflect de Go fournit un mécanisme robuste pour une telle introspection.

Pouvons-nous récupérer les balises de champ Struct à l'aide de Reflection ?

Oui, le package Reflect permet de récupérer des références aux valeurs des balises de champ. . Prenons l'exemple suivant :

package main

import "reflect"

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

func main() {
    user := &User{"John Doe The Fourth", 20}
    getTag(user.Name)
}

func getTag(i interface{}) string {
    field := reflect.TypeOf(i).Elem().FieldByName("Name")
    tag := string(field.Tag)
    return tag
}
Copier après la connexion

Pourquoi ne pouvons-nous pas utiliser la valeur de l'interface ?

Il est crucial de comprendre pourquoi transmettre la valeur d'un champ de structure est insuffisant . Le package Reflect le traite comme une valeur autonome, perdant toute connexion avec la structure d'origine. Par conséquent, nous devons utiliser le reflet.StructField associé au champ spécifié.

Passer le Reflect.StructField

En fournissant le reflet.StructField, nous conservons les informations sur le champ dans son contexte, y compris les valeurs des balises. L'exemple suivant montre comment procéder :

func main() {
    user := &User{"John Doe The Fourth", 20}
    field, ok := reflect.TypeOf(user).Elem().FieldByName("Name")
    if ok {
        tag := string(field.Tag)
        fmt.Println(tag)
    }
}
Copier après la connexion

Conclusion

Le package Reflect de Go permet aux développeurs d'approfondir les champs de structure et d'accéder à leurs métadonnées, y compris valeurs des balises. Comprendre les nuances de la transmission du reflet.StructField au lieu de la valeur du champ est la clé d'une réflexion réussie sur les champs de structure.

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