Maison  >  Article  >  développement back-end  >  Comment puis-je définir et modifier des variables globales dans les modèles Go ?

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-20 15:32:16828parcourir

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>]

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 :

  • 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!

Déclaration:
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