Получить голову или все, кроме головы ломтика - PullRequest
1 голос
/ 16 мая 2019

Как получить голову или хвост фрагмента в шаблоне Go? Что я хотел бы использовать:

{{template "breadcrumb" $urlArray[0] $urlArray[1:]}}

1 Ответ

2 голосов
/ 16 мая 2019

Вы можете получить элемент среза, используя index:

{{ $length := len $urlArray }}
first - {{index $urlArray 0}}

Но с последним сложнее, так как вы должны получить индекс $length - 1, а арифметические операции в шаблонах запрещены.

Но вы можете выставить функции go для шаблонов:

func first(s []string) string {
  if len(s) == 0 {
    return ""
  }
  return s[0]
}

func last(s []string) string {
  if len(s) == 0 {
    return ""
  }
  return s[len(s) - 1]
}

const tmpl = `first - {{ first $urlArray }}, last - {{ last $urlArray }}`

t := template.Must(template.New("").Funcs(template.FuncMap{"first": first, "last": last}).Parse(tmpl))
...