繁体   English   中英

如何在条件中分配变量

[英]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及更早版本,这是不可能的,模板变量(标识符)无法修改(有“变通办法”,请参阅以下链接)。 它们可以在(n内部)块中重新声明/阴影,但是一旦您离开内部块,更改将不可见。 有关详细信息和变通方法,请参阅In a Go模板范围循环,是否在每次迭代时在循环重置之外声明变量?

请注意,然而Go 1.11即将发布,这将支持这一点

这将是一个从Go 1.11开始的有效且有效的模板代码:

{{ $v := "init" }}
{{ if true }}
  {{ $v = "changed" }}
{{ end }}
v: {{ $v }} {{/* "changed" */}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM