The index
function is documented at 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.
To use index
: pass the value you want to index, and the values to index by, e.g.
index . "Values" "something" "something-else" "values" "list"
Combined with the {{range}}
action:
Items:
{{range index . "Values" "something" "something-else" "values" "list"}}
{{.}},
{{end}}
See a simplified working example:
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 }}`
Output (try it on the Go Playground):
data: one, two, three,