使用 Go 模板:创建和修改全局变量
Go 模板提供了方便的功能,用于创建可重用的代码片段以生成动态 HTML。使用模板时遇到的一个常见挑战是无法跨模板的不同部分定义和修改全局变量。
问题:范围有限的全局变量
考虑以下 HTML 模板:
{{if .UserData}} {{$currentUserId := .UserData.UserId}} [<a href="#ask_question">Inside {{$currentUserId}}</a>] {{else}} {{$currentUserId := 0}} {{end}} [<a href="#ask_question">outside {{$currentUserId}}</a>]
在 if 条件中,模板定义了一个局部变量 $currentUserId,其值基于 UserData 属性分配。然而,这个变量的作用域仅限于 if 块,而我们也希望在外部访问它。
解决方案:定义和修改变量
定义一个Go 模板中的全局变量,使用赋值运算符 :=.
{{$currentUserId := 0}}
要更改变量的值,请使用赋值运算符 =.
{{$currentUserId = .UserData.UserId}}
通过定义变量在 if 块之外但在块内修改它,对 $currentUserId 的更改在 if 块之后仍然存在。
例如,以下代码在 if 块之前和之后添加一些额外的逻辑:
{{$currentUserId := 0}} Before: {{$currentUserId}} {{if .UserData}} {{$currentUserId = .UserData.UserId}} [<a href="#ask_question">Inside {{$currentUserId}}</a>] {{else}} {{$currentUserId = 0}} {{end}} After: {{$currentUserId}}
现在,对于 UserData 存在和不存在的两种情况,$currentUserId 变量都可以正确更新并且可以在 if 块之外访问。
其他方法
在除了使用全局变量之外,您还可以考虑:
以上是如何在Go模板中定义和修改全局变量?的详细内容。更多信息请关注PHP中文网其他相关文章!