網頁

2024/2/15

Golang template 自訂函式

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)
    }
}

github


測試

執行程式輸出結果如下:

1 + 2 = 3


沒有留言:

張貼留言