在 Go HTML/模板中管理全局变量
在 Go 的 html/模板中创建变量时,它们的范围通常仅限于条件块其中定义了它们。为了克服这个问题并在模板的多个部分之间共享变量,需要一种替代方法。
在 Go 1.11 中,引入了一种用于修改模板变量的新机制。
创建全局变量:
要定义全局变量,请使用赋值运算符 (:=):
{{$globalVar := value}}
修改全局变量:
要更改全局变量的值,请使用赋值运算符 (=):
{{$globalVar = newValue}}
条件块中的用例:
如果全局变量是在 {{if}} 块外部创建但在其中进行修改,更改在该块之后可见。
{{$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>]
示例:
考虑以下模板:
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) }
使用以下源:
Before: {{$globalVar}} [<a href="#ask_question">Inside {{$globalVar}}</a>] [<a href="#ask_question">Outside {{$globalVar}}</a>]
输出将是:
Before: 0 [<a href="#ask_question">Inside 99</a>] [<a href="#ask_question">Outside 99</a>]
这演示了修改全局变量并进行更改的能力反映在整个模板中。
以上是如何管理和修改Go HTML模板中的全局变量?的详细内容。更多信息请关注PHP中文网其他相关文章!