首页 > 解决方案 > 如何在 go 模板中排列数组的一部分?

问题描述

例如,我想要Fields除最后一个元素之外的范围。
也许像:

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

我有一些方法吗?
谢谢!

标签: gotemplates

解决方案


内置的模板切片功能几乎可以满足您的需求。缺少的部分正在计算新切片的最后一个索引。为此,向模板添加一个附加函数:

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}}

操场示例


推荐阅读