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

Tim*_*ell 3 templates go slice

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

{{$size := len .Things}}
Run Code Online (Sandbox Code Playgroud)

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

{{index .Things 4}}
Run Code Online (Sandbox Code Playgroud)

{{index .Things $size}}
Run Code Online (Sandbox Code Playgroud)

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

我是否已经完成了所有定义事物的函数,或者是否有我可以使用的算术?


即我如何在 golang 模板中执行此操作/sf/answers/1577512191/ 。

定义负函数:/sf/answers/1738663531/

Cer*_*món 5

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

以下是如何添加涵盖此案例和其他场景的“add”函数:

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

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

{{index .Things (add $size -1)}}
Run Code Online (Sandbox Code Playgroud)