【问题标题】:How do I get the last element of a slice in a golang template如何在golang模板中获取切片的最后一个元素
【发布时间】:2018-08-03 01:14:47
【问题描述】:

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

{{$size := len .Things}}

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

{{index .Things 4}}

但是

{{index .Things $size}}

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

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


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

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

【问题讨论】:

    标签: templates go slice


    【解决方案1】:

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

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

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

    像这样在模板中使用它:

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

    【讨论】:

      【解决方案2】:

      与其他语言或某些框架相比,Go 模板可能被视为更“被动”。被动视图的想法是它们不包含太多逻辑,而是将所有数据传递进去。

      因此您可以将“LastThing”传递给您的模板,该模板分配了最后一个事物。

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

      【讨论】:

        【解决方案3】:

        在循环外定义变量(范围):

        {{$i:=""}}
        {{$el:=""}}
        {{range $i,$el = $.Sorteados}}{{end}}
        <span >{{$i}} - {{$el}} </span>
        

        所以,在循环之后使用它们。

        【讨论】:

          猜你喜欢
          • 2014-04-27
          • 2021-08-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-02
          • 2014-11-28
          • 1970-01-01
          • 2021-12-16
          相关资源
          最近更新 更多