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.
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.
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.
Si la modification des variables globales ne convient pas, envisagez ces alternatives :
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.
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