"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment gérer efficacement la portée des variables globales dans les modèles Go HTML ?

Comment gérer efficacement la portée des variables globales dans les modèles Go HTML ?

Publié le 2024-11-25
Parcourir:281

How to Effectively Manage Global Variable Scope in Go HTML Templates?

Portée globale des variables dans les modèles Go

Lors de la création de variables globales dans le package html/template de Go, il est crucial de comprendre les limites de la portée. Conformément à la documentation du package, les variables définies dans un modèle ont une portée limitée s'étendant jusqu'à la fin de la structure de contrôle (par exemple, if, with, range) dans laquelle elles sont déclarées.

Étude de cas

Considérez le code HTML/modèle suivant :

{{if .UserData}}
    {{$currentUserId := .UserData.UserId}}
    [<a href="#ask_question">Inside {{$currentUserId}}</a>]
{{else}}
    {{$currentUserId := 0}}
{{end}}
[<a href="#ask_question">outside {{$currentUserId}}</a>]

Ce code vise à afficher l'ID utilisateur actuel à l'intérieur du bloc if et 0 à l'extérieur du bloc. Cependant, le résultat affiche 0 aux deux endroits en raison de la portée limitée de $currentUserId.

La solution utilisant Assignment

Go 1.11 a introduit la prise en charge de la modification des valeurs des variables de modèle. Pour initialiser une variable, utilisez :=, comme dans :

{{$currentUserId := 0}}

Pour mettre à jour sa valeur, utilisez =, comme dans :

{{$currentUserId = .UserData.UserId}}

En modifiant une variable définie en dehors du bloc if, la modification est accessible à la fois à l'intérieur et à l'extérieur le bloc.

Solutions de contournement alternatives

Si la modification des variables globales ne convient pas, envisagez ces alternatives :

  • Fonction personnalisée : Enregistrez une fonction personnalisée fonction qui accepte une variable et lui attribue une valeur. Cette fonction peut être appelée dans le modèle pour obtenir un effet similaire.
  • Variables modifiables simulées : définissez une variable dans la carte de données du modèle et enregistrez une fonction personnalisée pour modifier sa valeur. Cela permet de simuler des variables « modifiables » dans le modèle.

En tirant parti de ces solutions, vous pouvez créer et modifier des variables globales dans le package html/template de Go, garantissant ainsi une portée de variable appropriée et obtenant les fonctionnalités souhaitées dans votre modèles.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3