Go template使用自訂函式。
使用template.Template.Funcs
可加入自訂函式,將自訂函式與名稱放入template.FuncMap
做為參數傳入。
例如下面將add(a, b int) int
函式放入template.FuncMap
,名稱為add
,所以在template中以{{add .X .Y}}
來相加後面的參數值.X
和.Y
。
main.go
package main
import (
"os"
"text/template"
)
type AddValues struct {
X int
Y int
}
var funcMap = template.FuncMap{
"add": add,
}
func add(a, b int) int {
return a + b
}
func main() {
text := "{{.X}} + {{.Y}} = {{add .X .Y}}\n" // template content
t := template.Must(template.New("demo").Funcs(funcMap).Parse(text))
data := AddValues{
X: 1,
Y: 2,
}
err := t.Execute(os.Stdout, data)
if err != nil {
panic(err)
}
}
測試
執行程式輸出結果如下:
1 + 2 = 3
沒有留言:
張貼留言