golang能夠選擇從字符串或文件來得到模板。
字符串經過Parse函數
文件經過ParseFiles函數
二者寫法有些區別,容易混淆,筆者趟了半天的坑,特此作個總結。html
package main import ( "html/template" "os" "log" "fmt" ) var tplString=` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>{{.Title}}</title> </head> <body> </body> </html> ` type Data struct { Title string } func checkErr(err error) { if err != nil { log.Println(err) } } func ParseString(data Data) { var err error var t *template.Template t = template.New("Products") //建立一個模板 t, err = t.Parse(tplString) checkErr(err) err = t.Execute(os.Stdout, data) checkErr(err) } func ParseFileWrong(data Data) { var err error var t *template.Template t = template.New("Products") //建立一個模板 t, err = t.ParseFiles("tpl.html") checkErr(err) err = t.Execute(os.Stdout, data) checkErr(err) } func ParseFile(data Data) { var err error var t *template.Template t, err = template.ParseFiles("tpl.html") //從文件建立一個模板 checkErr(err) err = t.Execute(os.Stdout, data) checkErr(err) } func main() { data:=Data{Title:"夕陽西下"} fmt.Println("-----第一種----") ParseString(data) fmt.Println("-----第二種(錯誤)----") ParseFileWrong(data) fmt.Println("-----第三種----") ParseFile(data) }
輸出結果以下:golang