控制 Go 模板中的缩进

我有以下 Go 模板:


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

    {{ $job -}}:

    {{ range $steps -}}

        {{ . }}

    {{ end }}

{{- end }}

它产生如下所示的输出:


job1:

    step1

    step2

    job2:  <--- This should not be indented

    step1

    step2

之后的所有作业job1都缩进四个空格。我不清楚为什么模板引擎会决定任意缩进剩余的作业。如何控制缩进以便输出显示如下:


job1:

    step1

    step2

job2:

    step1

    step2


绝地无双
浏览 186回答 1
1回答

ibeautiful

job2的标识并非来自您认为的地方:它来自打印步骤之间的空格和换行符:{{ range $steps -}}&nbsp; &nbsp;{{ . }}&nbsp; <-- starting from here, and the indentation of the next line{{ end }}所以输出换行符和of之后的缩进step2,job1然后你就从job2那里开始:已经缩进了。如果仅在输出中需要的位置插入换行符和缩进,您会得到想要的:{{ range $job, $steps := .jobs}}{{ $job }}:{{ range $steps }}&nbsp; &nbsp; {{ . }}{{ end }}{{ end }}或者按照你想要的方式格式化你的模板,并在所有地方禁用缩进,并在你想要的地方显式输出换行符和缩进:{{ range $job, $steps := .jobs -}}&nbsp; &nbsp; {{- $job -}}:{{"\n"}}&nbsp; &nbsp; {{- range $steps -}}&nbsp; &nbsp; &nbsp; &nbsp; {{"&nbsp; &nbsp; "}}{{- . -}}{{"\n"}}&nbsp; &nbsp; {{- end -}}{{- end }}或者第三种解决方案:{{ range $job, $steps := .jobs -}}&nbsp; &nbsp; {{ $job }}:&nbsp; &nbsp; {{- range $steps }}&nbsp; &nbsp; {{ . }}{{ end }}{{ end }}这些都是输出(在Go Playground上试试):job1:&nbsp; &nbsp; step1&nbsp; &nbsp; step2job2:&nbsp; &nbsp; step1&nbsp; &nbsp; step2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go