Обратите внимание, что первый индекс 0
, а не 1
.
Вы можете индексировать список как при отображении его Name
, так и Value
:
{{(index .Labels.SortedPairs 0).Name}} = {{(index .Labels.SortedPairs 0).Value}}
Это короче, если вы присвоите его переменной:
{{$first := index .Labels.SortedPairs 0}}{{$first.Name}} = {{$first.Value}}
И еще понятнее, если вы используете действие {{with}}
:
{{with index .Labels.SortedPairs 0}}{{.Name}} = {{.Value}}{{end}}
Протестируем 3 варианта:
type Pair struct {
Name, Value string
}
var variants = []string{
`{{$first := index .SortedPairs 0}}{{$first.Name}} = {{$first.Value}}`,
`{{(index .SortedPairs 0).Name}} = {{(index .SortedPairs 0).Value}}`,
`{{with index .SortedPairs 0}}{{.Name}} = {{.Value}}{{end}}`,
}
m := map[string]interface{}{
"SortedPairs": []Pair{
{"first", "1"},
{"second", "2"},
},
}
for _, templ := range variants {
t := template.Must(template.New("").Parse(templ))
if err := t.Execute(os.Stdout, m); err != nil {
panic(err)
}
fmt.Println()
}
Результат (попробуйте на Go Playground):
first = 1
first = 1
first = 1
person
icza
schedule
06.04.2017