1

在 Go 中,我们可以很容易地创建一个变量

{{- if .Bool.Var -}}
  {{ $MyVar := "val" }}
{{- end -}}

我们甚至可以很容易地创建共享片段

{{- define "val" -}}
  <p>Some shared template data</p>
{{- end -}}

我的问题是,我们如何着手将$MyVar其用作文本值,{{template}}以便我们可以执行类似{{template $MyVar}},而不会导致错误,或者这不可能?

4

1 回答 1

1

在纯Gotext/template语言中(这不是 Go本身,而是在 Go 中实现的不同的东西)这是不可能的;{{template}}调用采用文字字符串名称。

这种语言最突出的用户之一是 Kubernetes Helm部署管理器。这包括对模板语言的几个扩展。其中之一是一个include模板函数,它可以将任何值作为模板的名称,并生成一个字符串,而不是立即输出模板内容(您可以将其包含在管道中,但不能使用template)。因此,特别是在 YAML 文件中,您可以

{{ include $MyVar }}
于 2018-11-09T02:00:15.343 回答