如何在Go模板中获取 slice 的头或尾?
我想使用的是:

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

最佳答案

您可以使用index获得slice元素:

{{ $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))

10-06 12:34