为什么在条件 Go 模板中使用破折号

ami*_*mit 7 go go-templates kubernetes-helm

我已经看到许多破折号用于 if 语句(“{{- if..”)的例子,例如:

{{- if hasKey .Values.mymap "mykey" }}
    # do something conditional here...
{{- end }}
Run Code Online (Sandbox Code Playgroud)

该语句中破折号的目的是什么?

Bur*_*dar 10

Dash 从模板中出现的一侧的输出中删除空格:

https://golang.org/pkg/text/template/#hdr-Text_and_spaces

{{- if ...}}
Run Code Online (Sandbox Code Playgroud)

以上将删除出现在 if 语句之前的所有空格,因此如果if打印结果,它将在最后一段文本之后没有任何空格。

  • 删除 if 正文输出后的所有空格,因此 {{-end}} 之后的输出现在紧跟在 if-body 中最后一个打印的非空格字符之后。 (2认同)
  • 如果将“-”移到右括号之前会怎样?这有什么区别吗? (2认同)