Maison > développement back-end > Golang > le corps du texte

Comment puis-je définir et modifier des variables globales dans les modèles Go ?

Susan Sarandon
Libérer: 2024-11-20 15:32:16
original
828 Les gens l'ont consulté

How Can I Define and Modify Global Variables in Go Templates?

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>]
Copier après la connexion

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}}
Copier après la connexion

Pour modifier la valeur d'une variable, utilisez l'opérateur d'affectation =.

{{$currentUserId = .UserData.UserId}}
Copier après la connexion

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}}
Copier après la connexion

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 :

  • Fonctions personnalisées : L'enregistrement de fonctions personnalisées vous permet d'exécuter une logique spécifique et d'accéder aux données depuis votre modèles.
  • Simulation de variables modifiables : En utilisant des fonctions personnalisées, vous pouvez simuler le comportement de variables modifiables à l'aide d'un mécanisme tel qu'une carte.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal