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>