Reputation: 9368
How to use an if condition within a range iteration loop in go?
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
Upvotes: 1
Views: 5480
Reputation: 120951
If you check the error returned from Execute
, you will find that the template is attempting to pass arguments to the non-function $i. The correct syntax is:
const t = `{{range $i, $v := .}}{{$i}} {{$v}}{{if gt $i 0}}, {{end}}
{{end}}
`
The arguments follow the function gt
. The function gt
is not an infix operator.
If your goal is to print a comma separated list, then write it like this:
const t = `{{range $i, $v := .}}{{if $i}},
{{end}}{{$i}} {{$v}}{{end}}
`
Upvotes: 3