首页 >后端开发 >Golang >如何管理和修改Go HTML模板中的全局变量?

如何管理和修改Go HTML模板中的全局变量?

Patricia Arquette
Patricia Arquette原创
2024-11-17 22:10:02393浏览

How Can I Manage and Modify Global Variables in Go HTML Templates?

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn