我尝试在使用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
我做错了什么?
答案 0 :(得分: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}}
考虑这个Playground示例:http://play.golang.org/p/are5JNPXt1