模板自定义函数及管道

自定义函数

您可以在 go 内定义自定义函数并在模板中调用。

使用 template.FuncMap{ } 定义一个函数, 注意函数只能返回一个值,或者一个值 + 错误;然后通过 template.New() 将函数传递到模板调用。

go 示例

package main

import (
	"net/http"
	"text/template"
)

func main() {
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		// 定义函数
		say := template.FuncMap{"say": func(message string) string {
			return "say : " + message
		}}
		t := template.New("index.html")
		t.Funcs(say)
		t, _ = t.ParseFiles("tmpls/index.html")
		// 传入数据
		err := t.Execute(w, "test..")
		if err != nil {
			println(err.Error())
		}
	})
	http.ListenAndServe(":80", nil)
}

模板示例

<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
   <div>hi...{{say .}}</div>
</body>
</html>


管道

管道就是按顺序连接在一起的一串参数和方法。会把管道的输出传递给下一个管道。

语法 : {{ p1 | p2 | p3 }}

<div>{{1.12356 | printf "%.2f"}}</div>