首页 > 解决方案 > 在 golang 模板之间共享变量

问题描述

我想用 GOtemplate 生成 2 个单独的文件,假设我有这个代码:

aBuffer := new(bytes.Buffer)
bBuffer := new(bytes.Buffer)

aTmpl, _ := template.ParseFiles(aFilePath)
aTmpl.Execute(aBuffer, someVariables)

bTmpl, _ := template.ParseFiles(bFilePath)
bTmpl.Execute(bBuffer, someVariables)

假设我对这两个文件使用了一个通用 var(不是来自“someVariables”golang var),我有没有办法像 Helm 一样在单独的文件中声明它?

{{ define myVar }}
the-var
{{ end }}

然后保持一种我可以在 aTmpl 和 bTmpl 中重复使用的上下文:

{{ template myVar .}}

标签: gogo-templates

解决方案


使用通用定义创建第三个文件:

{{define "myVar"}}
the-var
{{end}}

与其他文件一起解析该文件:

aTmpl, _ := template.ParseFiles(aFilePath, commonFilePath)

bTmpl, _ := template.ParseFiles(bFilePath, commonFilePath)

在两个模板中使用“myvar”,如下所示:

{{template "myVar" .}}

推荐阅读