Maison  >  Article  >  développement back-end  >  Reflection peut-il récupérer le nom d'une variable à partir de sa valeur dans Go ?

Reflection peut-il récupérer le nom d'une variable à partir de sa valeur dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-26 11:45:11962parcourir

Can Reflection Retrieve a Variable's Name from Its Value in Go?

Puis-je récupérer le nom d'une variable à partir de sa valeur ?

Question : Dans le contexte d'un système de modèles, comment puis-je obtenir le nom d'une variable nom basé uniquement sur sa valeur en utilisant la réflexion ? Cela me permettrait de remplacer les valeurs d'espace réservé dans un modèle par les noms de variables réels.

Utilisation de Reflection :

J'ai tenté d'utiliser la réflexion pour récupérer le nom de la variable, mais J'ai échoué. Voici le code que j'ai essayé :

onevar := "something"
other := "something else"

var msg string
sa := []string{onevar, other}
for _, v := range sa {
    vName := reflect.TypeOf(v).Name()  // Attempt to get the variable name
    vName = fmt.Sprintf("{{%s}}", vName)  // Prefix the name with "{{" and "}}"
    msg = strings.Replace(msg, vName, v, -1)  // Replace the placeholder with the actual value
}

Cette approche ne donne pas le résultat souhaité car la tranche sa ne contient que les valeurs des variables, pas les noms des variables.

Réponse :

La réflexion ne peut pas être utilisée pour récupérer le nom de la variable dans ce scénario. La tranche sa contient les valeurs des variables, pas les noms de variables eux-mêmes. Pour atteindre votre objectif de remplacer les espaces réservés par des noms de variables, il est recommandé d'utiliser une carte au lieu d'une tranche. Une carte peut associer des noms de variables à leurs valeurs, permettant un remplacement efficace et précis.

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!

Déclaration:
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