Как я могу ранжировать фрагмент массива в шаблоне go?

# #go #templates

Вопрос:

Например, я хочу изменить диапазон Fields , кроме последнего элемента.
Может быть, как:

 {{range $Field := $.Fields[:len $Field - 1]}}
 

Есть ли у меня какие-то подходы?
Тх!

Ответ №1:

Встроенная функция среза шаблона почти делает то, что вам нужно. Недостающий фрагмент вычисляет последний индекс нового фрагмента. Для этого добавьте функцию добавления в шаблон:

 func add(a, b int) int {
    return a   b
}
 

Добавьте функцию в шаблон перед анализом:

  t, err := template.New(name).Funcs(template.FuncMap{"add": add}).Parse(text)
 

Используйте функцию следующим образом:

   {{range slice $ 0 (add (len $) -1)}}
     {{.}}
  {{end}}
 

пример детской площадки.