templates - 如何在 golang 模板中获取 slice 的最后一个元素

标签 templates go slice

我可以像这样在模板中获取 slice 的大小

{{$size := len .Things}}

我可以像这样在模板中索引 slice :

{{index .Things 4}}

但是

{{index .Things $size}}

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

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


即我该怎么做https://stackoverflow.com/a/22535888但在 golang 模板中。

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

最佳答案

默认情况下没有可用的算法,但您可以 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)}}

关于templates - 如何在 golang 模板中获取 slice 的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48940094/

相关文章:

c++ - 模板元编程静态成员函数无法获取类的 const static 值

linux - macOS 和 Linux 上 get rusage.maxrss 的奇怪值

file - Golang判断*File是指向文件还是目录

python - 如何仅显示值大于 x 的列

list - 从F#中的列表中切片类似的功能

python - 切片索引必须是整数或 None 或具有 __index__ 方法

c# - ASP.NET 模板

c++ - 为什么在推导类型时去除模板参数的限定符?

c++ - 为什么不能从 std::addressof<int> 解析模板参数?

css - 使用 gorilla/mux 使用 Go 服务静态文件