如何在条件中分配变量
How do I assign variables within a conditional
给定 YAML
文件和 go
模板,我可以使用以下方法分配变量:
{{ $foo := "bar" }}
我可以使用如下条件:
{{ if eq $foo "bar" }} jim {{ else }} bob {{ end }}
如何将两者结合起来将条件的结果赋值给变量?
我试过:
{{ $foo := "bar" }}
{{ if eq $foo "bar" }}
{{ $foo = "jim" }}
{{ else }}
{{ $foo = "bob" }}
{{ end }}
但是foo
仍然是bar
Go 1.10及更早版本无法做到这一点,模板变量(标识符)无法修改(有"workarounds",见下文link)。它们可以在 (n inner) 块中重新声明/隐藏,但是一旦您离开内部块,更改将不可见。有关详细信息和解决方法,请参阅
请注意,Go 1.11 即将发布 which will support this。
这将是从 Go 1.11 开始的有效且有效的模板代码:
{{ $v := "init" }}
{{ if true }}
{{ $v = "changed" }}
{{ end }}
v: {{ $v }} {{/* "changed" */}}
给定 YAML
文件和 go
模板,我可以使用以下方法分配变量:
{{ $foo := "bar" }}
我可以使用如下条件:
{{ if eq $foo "bar" }} jim {{ else }} bob {{ end }}
如何将两者结合起来将条件的结果赋值给变量?
我试过:
{{ $foo := "bar" }}
{{ if eq $foo "bar" }}
{{ $foo = "jim" }}
{{ else }}
{{ $foo = "bob" }}
{{ end }}
但是foo
仍然是bar
Go 1.10及更早版本无法做到这一点,模板变量(标识符)无法修改(有"workarounds",见下文link)。它们可以在 (n inner) 块中重新声明/隐藏,但是一旦您离开内部块,更改将不可见。有关详细信息和解决方法,请参阅
请注意,Go 1.11 即将发布 which will support this。
这将是从 Go 1.11 开始的有效且有效的模板代码:
{{ $v := "init" }}
{{ if true }}
{{ $v = "changed" }}
{{ end }}
v: {{ $v }} {{/* "changed" */}}