如何 trim YAML Go 模板中的字符串?

How to trim a string in YAML Go template?

我有以下 values.yaml -

foo:
  - a: bar1
    b: bar2
  - a: bar3 
    b: bar4

我正在使用如下模板 -

data:
  string:
{{range .Values.foo}}
  {{ .a ` and ` .b ` or `}}
{{end}}

输出是 -

data:
  string: bar1 and bar2 or bar3 and bar4 or

如何去掉尾随或?

当您遍历列表的 range 时,您可以将局部变量设置为实际索引和值(镜像 Go 语义)。因此,您可以将其更改为将 "or" 放在开头,但在第一次循环时跳过它。

data:
  string:
    {{ range $i, $v := .Values.foo -}}
    {{- if ne $i 0 }} or {{ end -}}
    {{- printf "%s and %s" $v.a $v.b -}}
    {{- end }}