代码之家  ›  专栏  ›  技术社区  ›  noamt CoderYL

如何在条件中分配变量

  •  3
  • noamt CoderYL  · 技术社区  · 6 年前

    给予 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

    1 回复  |  直到 6 年前
        1
  •  4
  •   icza    6 年前

    这在Go1.10和更早版本中是不可能的,模板变量(标识符)不能修改(有“解决方法”,请参见下面的链接)。它们可以在(n个内部)块中重新声明/阴影,但是一旦您离开内部块,更改将不可见。有关详细信息和解决方法,请参见 In a Go template range loop, are variables declared outside the loop reset on each iteration?

    注意,Go1.11即将发布 which will support this .

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