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!