go - 在 golang 模板之间共享变量

标签 go go-templates

我想使用 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)

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

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

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

{{ template myVar .}}

最佳答案

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

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

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

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

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

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

{{template "myVar" .}}

关于go - 在 golang 模板之间共享变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58089112/

相关文章:

http - 如何在 GO 中获取 LocalAddress?

go - 在1页中将相同的模板与不同的参数/变量一起使用

go - 模板中的 Nil 指针求值...为什么?有更好的策略吗?

go - 如何计算 golang 模板中列的总数?

templates - 多路平等测试失败

kubernetes - 获取 Helm 表中的文件夹列表

http - Golang 与 AWS S3 和 goamz 不支持的协议(protocol)方案 ""

http - 在一个 IP 上托管多个 Golang 站点并根据域请求提供服务?

pointers - 将 uintptr 从反射转换为指针 (*)

go - 为什么golang时间功能在某些日期会失败