我在 html/模板中有这段代码:
{{ $TotalPrice := 0.0 }}
{{ range $i, $tx := .Transactions }}
{{ $TotalPrice := FloatInc $TotalPrice (StrToFloat .TotalPrice) }}
<tr>
<td>{{ inc $i 1 }}</td>
<td>{{ .Description.String }}</td>
<td>{{ .Type }}</td>
<td>{{ .TotalPrice }}</td>
<td>{{ .Note }}</td>
</tr>
{{ end }}
<tr>
<td></td>
<td></td>
<td></td>
<td>{{ $TotalPrice }}</td>
<td></td>
<td></td>
</tr>
交易是带有 TotalPrice DB 字段的货币交易,根据Iris 框架规范,我有 4 个函数。
tmpl.AddFunc("dec", func(num int, step int) int {
return num - step
})
tmpl.AddFunc("inc", func(num int, step int) int {
return num + step
})
tmpl.AddFunc("FloatDec", func(num float64, step float64) float64 {
return num - step
})
tmpl.AddFunc("FloatInc", func(num float64, step float64) float64 {
return num + step
})
tmpl.AddFunc("StrToFloat", func(s string) (float64, error) {
return strconv.ParseFloat(s, 64)
})
我注意到 $TotalPrice 为每次迭代保留初始值(0.0),因此范围内的 {{ $TotalPrice }} 将打印 .TotalPrice 值,最后一行的 $TotalPrice 的值也将是 0.0 那么是什么在 go 模板中的等价物:
nums := []int{2, 3, 4}
sum := 0
for _, num := range nums {
sum += num
}
fmt.Println("sum:", sum)