如何在go?
的范围迭代循环中使用if条件package main
import "os"
import "text/template"
const t = `{{range $i, $v := .}}{{$i}} {{$v}}{{if $i gt 0}}, {{end}}
{{end}}
`
func main() {
d := []string{"a", "b", "c"}
template.Must(template.New("").Parse(t)).Execute(os.Stdout, d)
}
答案 0 :(得分:2)
如果从Execute
返回check the error,您会发现该模板正在尝试将参数传递给非函数$ i。正确的语法是:
const t = `{{range $i, $v := .}}{{$i}} {{$v}}{{if gt $i 0}}, {{end}}
{{end}}
`
参数遵循函数gt
。函数gt
不是infix operator。
如果您的目标是打印以逗号分隔的列表,请按以下方式编写:
const t = `{{range $i, $v := .}}{{if $i}},
{{end}}{{$i}} {{$v}}{{end}}
`