亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

控制 Go 模板中的縮進

控制 Go 模板中的縮進

Go
絕地無雙 2022-12-19 11:46:34
我有以下 Go 模板:{{ range $job, $steps := .jobs -}}    {{ $job -}}:    {{ range $steps -}}        {{ . }}    {{ end }}{{- end }}它產生如下所示的輸出:job1:    step1    step2    job2:  <--- This should not be indented    step1    step2之后的所有作業job1都縮進四個空格。我不清楚為什么模板引擎會決定任意縮進剩余的作業。如何控制縮進以便輸出顯示如下:job1:    step1    step2job2:    step1    step2
查看完整描述

1 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

job2的標識并非來自您認為的地方:它來自打印步驟之間的空格和換行符:


{{ range $steps -}}

   {{ . }}  <-- starting from here, and the indentation of the next line

{{ end }}

所以輸出換行符和of之后的縮進step2,job1然后你就從job2那里開始:已經縮進了。


如果僅在輸出中需要的位置插入換行符和縮進,您會得到想要的:


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

    {{ . }}{{ end }}

{{ end }}

或者按照你想要的方式格式化你的模板,并在所有地方禁用縮進,并在你想要的地方顯式輸出換行符和縮進:


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

    {{- $job -}}:{{"\n"}}

    {{- range $steps -}}

        {{"    "}}{{- . -}}{{"\n"}}

    {{- end -}}

{{- end }}

或者第三種解決方案:


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

    {{ $job }}:

    {{- range $steps }}

    {{ . }}{{ end }}

{{ end }}

這些都是輸出(在Go Playground上試試):


job1:

    step1

    step2

job2:

    step1

    step2


查看完整回答
反對 回復 2022-12-19
  • 1 回答
  • 0 關注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號