Utilisation des modèles Go : création et modification de variables globales
Les modèles Go offrent des fonctionnalités pratiques pour créer des fragments de code réutilisables afin de générer du HTML dynamique. Un défi courant rencontré lors de l'utilisation de modèles est l'incapacité de définir et de modifier des variables globales dans différentes sections du modèle.
Le problème : les variables globales à portée limitée
Considérons le modèle HTML suivant :
{{if .UserData}} {{$currentUserId := .UserData.UserId}} [<a href="#ask_question">Inside {{$currentUserId}}</a>] {{else}} {{$currentUserId := 0}} {{end}} [<a href="#ask_question">outside {{$currentUserId}}</a>]
Dans la condition if, le modèle définit une variable locale $currentUserId avec une valeur attribuée en fonction du Attribut UserData. Cependant, la portée de cette variable est limitée au bloc if, alors que nous souhaitons y accéder également à l'extérieur.
La solution : définir et modifier des variables
Pour définir un variable globale dans un modèle Go, utilisez l'opérateur d'affectation :=.
{{$currentUserId := 0}}
Pour modifier la valeur d'une variable, utilisez l'opérateur d'affectation =.
{{$currentUserId = .UserData.UserId}}
En définissant la variable en dehors du bloc if mais en la modifiant dans le bloc, les modifications apportées à $currentUserId persistent après le bloc if.
Par exemple, le code suivant ajoute quelques logique supplémentaire avant et après le bloc if :
{{$currentUserId := 0}} Before: {{$currentUserId}} {{if .UserData}} {{$currentUserId = .UserData.UserId}} [<a href="#ask_question">Inside {{$currentUserId}}</a>] {{else}} {{$currentUserId = 0}} {{end}} After: {{$currentUserId}}
Maintenant, dans les deux cas où UserData est présent et absent, la variable $currentUserId est correctement mise à jour et accessible en dehors du bloc if.
Autres approches
En plus d'utiliser des variables globales, vous pouvez également envisager :
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!