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>