1

当使用带有 Revel 的 html/template 包进行迭代时,我尝试打印切片的当前索引,但我没有得到预期的结果。

我的行动:

func (c App) Index() revel.Result {
    test_slice := []string{"t", "e", "s", "t"}

    return c.Render(test_slice)
}

我的模板:

{{range $i, $test_slice := .}}
    {{$i}}
{{end}}

而不是得到0 1 2 3,

我明白了DevMode RunMode currentLocale errors flash test_slice session title

我做错了什么 ?

4

1 回答 1

2

恐怕您没有遍历test_slice数组。如果这样做,您的代码将如下所示:

package main

import (
    "os"
    "html/template"
)

const templateString = `{{range $i, $test_slice := .}}
    {{$i}}
{{end}}`

func main() {
    t, err := template.New("foo").Parse(templateString)
    if err != nil {
        panic(err)
    }

    test_slice := []string{"t", "e", "s", "t"}

    err = t.Execute(os.Stdout, test_slice)
    if err != nil {
        panic(err)
    }
}

输出:

    0

    1

    2

    3

test_slice您的代码是在只是其中一个值的地图上进行迭代。你看到的是这张地图的关键名称,其中test_slice之一在哪里。要使其正常工作,您应该将模板更改为:

{{range $i, $test_slice := .test_slice}}
    {{$i}}
{{end}}

考虑这个游乐场示例:http ://play.golang.org/p/are5JNPXt1

于 2013-12-18T07:34:49.773 回答