main.go
package main
import (
"fmt"
"net/http"
"html/template"
)
func f1(w http.ResponseWriter, r *http.Request) {
k := func(name string) (string, error) {
return name + "真帅", nil
}
t := template.New("f.tmpl")
// 自定义函数必须在解析模板之前
t.Funcs(template.FuncMap{
"kua": k,
})
_, err := t.ParseFiles("./f.tmpl")
if err != nil {
fmt.Println("Parse template failured, err: %v\n", err)
}
name := "小王子"
t.Execute(w, name)
}
func main() {
http.HandleFunc("/", f1)
err := http.ListenAndServe(":9000", nil)
if err != nil {
fmt.Println("Http server start failured, err:%v\n", err)
}
}
hello.tmpl
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>自定义模板函数</title>
</head>
<body>
<p>{{ kua . }}</p>
</body>
</html>