具有自定義邏輯的模板
在此示例中,名為 funcMap
的函式對映通過 Funcs()
方法提供給模板,然後在模板內呼叫。這裡,函式 increment()
用於解決模板語言中缺少小於或等於函式的問題。請注意輸出中如何處理集合中的最終專案。
在 {{-
或 end -}}
開頭的 -
用於修剪空白,可用於幫助使模板更清晰。
package main
import (
"fmt"
"os"
"text/template"
)
var funcMap = template.FuncMap{
"increment": increment,
}
func increment(x int) int {
return x + 1
}
func main() {
const (
letter = `Dear {{with $names := .}}
{{- range $i, $val := $names}}
{{- if lt (increment $i) (len $names)}}
{{- $val}}, {{else -}} and {{$val}}{{end}}
{{- end}}{{end}}; How are you?`
)
tmpl, err := template.New("letter").Funcs(funcMap).Parse(letter)
if err != nil {
fmt.Println(err.Error())
}
tmpl.Execute(os.Stdout, []string{"Harry", "Jane", "Lisa", "George"})
}
結果是:
Dear Harry, Jane, Lisa, and George; How are you?