You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何控制Go templates模板range遍历的输出缩进

Go模板range循环缩进异常解决方案

问题根源

Go模板的空白裁剪规则为:

  • {{- :裁剪当前标签前方紧邻的所有空白(空格、换行、制表符)
  • -}} :裁剪当前标签后方紧邻的所有空白

原有写法的缩进问题来自两点:

  1. 第一次外层循环时,range标签后方的-}}刚好裁掉了job名行首的4个模板排版用缩进空格,但后续循环不会再触发该位置的裁剪逻辑
  2. 内层遍历steps的end标签没有做对应空白裁剪,导致模板中为了代码可读性写的控制语句行缩进残留到输出中,拼接到下一个job名前方,形成多余的4个空格

修正后的模板代码

核心原则:模板控制语句本身的排版缩进不要泄漏到最终输出,仅给实际需要展示的内容(job名、step名)配置对应缩进,正确写法如下:

{{ range $job, $steps := .jobs -}}
{{ $job }}:
{{ range $steps -}}
    {{ . }}
{{ end }}
{{- end }}

输出效果

渲染后会完全符合预期格式:

job1:
    step1
    step2
job2:
    step1
    step2

内容的提问来源于stack exchange,提问作者Joshua Gilman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 11:27:48