package main import ( "fmt" "html/template" "net/http" ) func modelHandlerFunc(w http.ResponseWriter, r *http.Request) { //1 定义模板 //2 解析模板 //自定义模板函数,要么返回一个值,要么两个值第二个值必须为err //moBanFunc := func(name string) (string, error) { // return name + " 你真牛", nil //} moBanFunc := func(name string) string { return name + " 你真牛" } t := template.New("index.tmpl") //添加函数方法映射,必须在解析之前 t.Funcs(template.FuncMap{ //可以添加多个模板函数 //key必须与tmpl中函数一致,value必须为自定义解析函数 "modelFunc": moBanFunc, }) _, err := t.ParseFiles("./index.tmpl") if err != nil { fmt.Printf("解析模板失败,原因:%v", err) return } //3 渲染模板 name := " golang" err2 := t.Execute(w, name) if err2 != nil { fmt.Printf("渲染模板失败,原因:%v", err2) return } } func main() { http.HandleFunc("/", modelHandlerFunc) err := http.ListenAndServe(":9002", nil) if err != nil { fmt.Printf("启动服务失败,原因:%v", err) } }
<body> <p>啊啊啊 {{ modelFunc . }} </p> <br/> </body> </html>