作用
模版是静态文本和动作的混合体,用于动态插入内容。
用法
初始化
t := template.New("template_name")
t, err := t.Parse("template_text")
if err != nil {
panic(err)
}
或者
t := template.New("template_name")
t = template.Must(t.Parse("template_text"))
template.Must
方法实现了error判断和panic。
实现一个辅助方法用于创建模版:
CreateTemplate := func(name, text string) *template.Template {
return template.Must(template.New(name).Parse(text))
}
变量展示
t := CreateTemplate("t", "Value is {{.}}\n")
t.Execute(os.Stdout, "some text")
t.Execute(os.Stdout, 5)
t.Execute(os.Stdout, []string{
"Go",
"Rust",
"C++",
"C#",
})
Value: some text
Value: 5
Value: [Go Rust C++ C#]
键值对展示
t := CreateTemplate("t", "Name: {{.Name}}\n")
t.Execute(os.Stdout, struct {
Name string
}{"Jane Doe"})
t.Execute(os.Stdout, map[string]string{
"Name": "Mickey Mouse",
})
Name: Jane Doe
Name: Mickey Mouse
逻辑展示
t := CreateTemplate("t", "{{if . -}} yes {{else -}} no {{end}}\n")
t.Execute(os.Stdout, "not empty")
t.Execute(os.Stdout, "")
yes
no
遍历展示
t := CreateTemplate("t", "Range: {{range .}}{{.}}、{{end}}\n")
t.Execute(os.Stdout, []string{
"Go",
"Rust",
"C++",
"C#",
})
Range: Go、Rust、C++、C#、