如果条件在golang模板中的范围内嵌套

时间:2017-04-11 04:53:58

标签: go go-templates

如何在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)
}

https://play.golang.org/p/IeenD90FRM

1 个答案:

答案 0 :(得分:2)

如果从Execute返回check the error,您会发现该模板正在尝试将参数传递给非函数$ i。正确的语法是:

const t = `{{range $i, $v := .}}{{$i}} {{$v}}{{if gt $i 0}}, {{end}}
{{end}}
`

参数遵循函数gt。函数gt不是infix operator

playground example

如果您的目标是打印以逗号分隔的列表,请按以下方式编写:

const t = `{{range $i, $v := .}}{{if $i}}, 
{{end}}{{$i}} {{$v}}{{end}}
`

playground example