我可以在Golang的另一个模板中使用模板变量吗?

时间:2016-03-08 03:34:27

标签: templates go

模板1

{{define "one"}}
  {{ $var := "Hello"}}
{{end}}

模板2

{{define "two"}}
  {{template "one"}}
  Say, {{print $var}}
{{end}}

我知道上面的例子无效。但有没有办法将"one"模板的变量用于"two"模板?

1 个答案:

答案 0 :(得分:0)

阅读所有文档。答案似乎是 no 。在嵌入到另一个模板之前执行模板时,该变量将消失,如果在模板中使用其值,则它将显示为静态文本。

在模板 one 的示例中,$var并未在任何地方使用,因此它会被丢弃。

执行的顺序是。

  1. 加载两个模板。
  2. 模板一个被执行,因为它没有被使用而抛出$var
  3. 执行模板两个,将模板一个的结果嵌入其中。
  4. 如果此解释不正确。请评论或编辑。

    但我的问题的答案是标准模板库没有在模板之间传递模板变量。它们仅供本地使用。