【发布时间】:2020-05-10 02:40:08
【问题描述】:
我需要编写一个模板,我首先定义一些变量,然后在模板生成的内容中使用它们:
{{ if $value.Env.CADDY_URL }}
{{ $url := $value.Env.CADDY_URL }}
{{ else }}
{{ $url := printf "http://%s.example.info" $value.Name }}
{{ end }}
{{/* more template */}}
{{/* and here I would like to use $url defined above */}}
{{ $url }}
我得到了错误
undefined variable "$url"
阅读documentation,我明白了
变量的作用域扩展到声明它的控制结构(“if”、“with”或“range”)的“结束”操作,如果没有这样的控制,则扩展到模板的末尾结构。
这是否意味着没有全局(或整个模板的范围)变量?或者有没有办法定义$url,以便以后在模板中重复使用?
【问题讨论】:
-
在 if 块之前使用 {{ $url := "" }} 声明它,然后在 if 块中使用 {{ $url = value }} 设置它。
标签: go go-templates