golang可以选择从字符串或文件来获得模板。
字符串通过Parse函数
文件通过ParseFiles函数
两者写法有些区别,容易混淆,笔者趟了半天的坑,特此做个总结。
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)
}
输出结果如下:
有疑问加站长微信联系(非本文作者)