go-templates - 如何在任何缩进级别放置带有多行输出的 go-template 操作?

标签 go-templates

我们正在使用 go-templates 创建 yaml。在它们中,我们有需要在特定缩进级别缩进的多行输出操作。我们可以使用 indent函数,但它不会区别对待第一行,因此要求 Action 定义没有缩进级别。

例如:

foo:
  bar:
    baz:
{{ myYamlOutputtingAction | indent 6 }} # <-- notice 0 indent level

有没有一种方法可以将我的操作定义放在对模板上下文有意义的缩进级别?

最佳答案

更新:小枝2.13.0+
刚刚nindent而不是 indent . sprig library包括这个功能正是这个用例。

上面的代码可以写成:

foo:
  bar:
    baz:
      {{ myYamlOutputtingAction | nindent 6 }}

之前小枝版本的旧答案 2.13.0
你可以改变这个:
foo:
  bar:
    baz:
{{ myYamlOutputtingAction | indent 6 }} # <-- notice 0 indent level


对此:
foo:
  bar:
    baz:
      {{- "\n"}}{{ myYamlOutputtingAction | indent 6 }} # <-- properly indented with a little bit fluff

一点解释

这是通过确保遵循 {{- "\n"}} 的任何内容来实现的。有 0 个缩进。这意味着您可以交易一个黑客 {{- "\n"}}在有意义的时候进行适当的缩进。我们通常认为这是值得的。

关于go-templates - 如何在任何缩进级别放置带有多行输出的 go-template 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46066524/

相关文章:

loops - Go 模板中的嵌套循环

html - 如何在go模板中传入map "created on the way"

templates - 告诉 Golang 先执行哪个模板

templates - 模板无法评估类型 Y 中的字段 X

go - 如何在模板中声明全局变量?

Golang 模板不渲染 html

用于 Web 应用程序的 Golang 模板

go - 尝试呈现模板,出现错误 html/template : "templates/index.html" is undefined

go - 使用具有多个返回值的方法

go - 用 Helm 压平字典