我想在Golang模板中包含破折号的变量下指定值:
data:
init: |
{{- range .Values.something.something-else.values.list }}
{{ . | indent 4 }}{{ end }}
我已经看到要使用名称为index
的函数中的破折号来访问变量值。
我不理解如何将这两个功能结合起来。
答案 0 :(得分:1)
index
函数记录在text/template
: Functions section:
index
Returns the result of indexing its first argument by the
following arguments. Thus "index x 1 2 3" is, in Go syntax,
x[1][2][3]. Each indexed item must be a map, slice, or array.
使用index
:传递您要索引的值,以及索引的值,例如
index . "Values" "something" "something-else" "values" "list"
结合{{range}}
操作:
Items:
{{range index . "Values" "something" "something-else" "values" "list"}}
{{.}},
{{end}}
参见简化的工作示例:
func main() {
t := template.Must(template.New("").Parse(src))
m := map[string]interface{}{
"something": map[string]interface{}{
"something-else": map[string]interface{}{
"list": []string{"one", "two", "three"},
},
},
}
if err := t.Execute(os.Stdout, m); err != nil {
panic(err)
}
}
const src = `data:
{{- range index . "something" "something-else" "list" }} {{.}},{{ end }}`
输出(在Go Playground上尝试):
data: one, two, three,