如何在golang模板中获取切片的最后一个元素

时间:2018-02-23 02:09:37

标签: templates go slice

我可以在这样的模板中获得切片的大小

{{$size := len .Things}}

我可以在模板中索引切片,如下所示:

{{index .Things 4}}

但是

{{index .Things $size}}

给出“超出范围”错误,因为对切片进行索引是从零开始的。

我是否已完成所有功能定义或是否可以使用算术?

即。我如何在golang模板中执行此操作https://stackoverflow.com/a/22535888

定义减号函数:https://stackoverflow.com/a/24838050/10245

2 个答案:

答案 0 :(得分:1)

默认情况下没有可用的算术,但您可以使用add FuncMap此功能。

以下是如何添加涵盖此案例和其他方案的“添加”功能:

t := template.Must(template.New("").Funcs(template.FuncMap{
    "add": func(a, b int) int { return a + b },
    }).Parse(theTemplate)

在模板中使用它,如下所示:

{{index .Things (add $size -1)}}

答案 1 :(得分:1)

在go模板中可以被视为更多"被动"比其他语言或某些框架。被动视图的概念是它们不包含太多逻辑,但会传递所有数据。

所以你可以通过" LastThing"到你的模板,它已经分配了最后一件事。

这不能直接回答您的问题,但这只是您可以考虑的替代方案。