Home > Article > Backend Development > How Can I Manage and Modify Global Variables in Go HTML Templates?
Managing Global Variables in Go HTML/Template
When creating variables in Go's html/template, their scope is typically limited to the conditional block in which they're defined. To overcome this and share variables across multiple sections of a template, an alternative approach is required.
In Go 1.11, a new mechanism was introduced for modifying template variables.
Creating Global Variables:
To define a global variable, utilize the assignment operator (:=):
{{$globalVar := value}}
Modifying Global Variables:
To alter the value of a global variable, employ the assignment operator (=):
{{$globalVar = newValue}}
Use Case within Conditional Blocks:
If a global variable is created outside of an {{if}} block but modified within it, the changes become visible after the block.
{{$globalVar := 0}} Before: {{$globalVar}} {{if .UserData}} {{$globalVar = .UserData.UserId}} [<a href="#ask_question">Inside {{$globalVar}}</a>] {{else}} {{$globalVar = 0}} {{end}} [<a href="#ask_question">Outside {{$globalVar}}</a>]
Example:
Consider the following template:
m := map[string]interface{}{} t := template.Must(template.New("").Parse(src)) m["UserData"] = UserData{99} if err := t.Execute(os.Stdout, m); err != nil { panic(err) }
With the following source:
Before: {{$globalVar}} [<a href="#ask_question">Inside {{$globalVar}}</a>] [<a href="#ask_question">Outside {{$globalVar}}</a>]
The output will be:
Before: 0 [<a href="#ask_question">Inside 99</a>] [<a href="#ask_question">Outside 99</a>]
This demonstrates the ability to modify global variables and have the changes reflected throughout the template.
The above is the detailed content of How Can I Manage and Modify Global Variables in Go HTML Templates?. For more information, please follow other related articles on the PHP Chinese website!