在 Go 的 html/template 中创建全局变量并在多个位置修改它们
在 Go 的 html/template 包中,在其内部定义一个变量范围有效地将其隔离到该特定区域。在提供的示例中,变量 $currentUserId 旨在存储在整个模板中持续存在的值,但其范围仅限于 if 条件。
修改模板变量
Go 1.11 引入了修改模板变量的功能。使用 := 定义变量,而 = 分配新值。如果变量是在 if 条件之外定义的,并且它们的值在其中修改,则可以使变量可全局访问。
{{$currentUserId := 0}} {{if .UserData}} {{$currentUserId = .UserData.UserId}} [<a href="#ask_question">Inside {{$currentUserId}}</a>] {{else}} [No User Data] {{end}} [<a href="#ask_question">outside {{$currentUserId}}</a>]
这确保了 {{if}} 块中所做的更改在块结束后得到反映.
替代方案方法
结论
虽然 Go 的模板包在简单性方面表现出色,但对于复杂逻辑来说确实存在局限性。但是,通过使用赋值和自定义函数,您可以有效地操作模板中多个位置的值。
以上是如何在 Go 的 html/template 包中创建和修改全局变量?的详细内容。更多信息请关注PHP中文网其他相关文章!