Go模板自定義函式
阿新 • • 發佈:2021-01-15
技術標籤:Go
main.go
package main import ( "fmt" "html/template" "net/http" ) type User struct { Name string gender string Age int } func sayHello(w http.ResponseWriter, r *http.Request) { // 定義函式 k := func (name string) (string, error) { return name + "is goods", nil } // 模板中註冊函式 t := template.New("hello.tmpl") t.Funcs(template.FuncMap{ "kua": k, }) // 解析模板 t, err := template.ParseFiles("./hello.tmpl") if err != nil { fmt.Println("Parse template failured, error: %v", err) return } // 渲染模板 u1 := User { Name: "Go", Age: 10, } m1 := map[string]interface{}{ "name":"rocky", "age": 30, } // err = t.Execute(w, u1) err = t.Execute(w, map[string]interface{}{ "u1": u1, "m1": m1, }) if err != nil { fmt.Println("Render template failured, error: %v", err) return } } func main() { http.HandleFunc("/hello", sayHello) err := http.ListenAndServe(":9000", nil) if err != nil { fmt.Println("Server start falired, error:%v", err) return } }
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>Go Template</title> </head> <body> <p><h1>{{ kua . }}</h1></p> </body> </html>