Golang 模板编程是使用 text/template 和 html/template 包进行动态内容生成的技术。它允许将数据嵌入预定义的模板中,常用于生成 HTML 页面、配置文件或文本输出。
核心概念
- 模板:包含静态文本和动态动作(如
{{.Field}})的字符串或文件。
- 数据:通过结构体、映射等传递给模板的数据。
- 动作:模板中的控制语句,如条件判断、循环等。
基本用法
- 定义模板:使用
{{.}} 访问数据,{{.FieldName}} 访问字段。
- 解析模板:用
template.ParseFiles() 或 template.New().Parse() 解析模板字符串或文件。
- 执行模板:通过
Execute() 方法将数据注入模板。
示例代码
package main
import (
"os"
"text/template"
)
type User struct {
Name string
Age int
}
func main() {
// 定义模板
tmpl := `Hello, {{.Name}}! You are {{.Age}} years old.`
// 解析模板
t, err := template.New("test").Parse(tmpl)
if err != nil {
panic(err)
}
// 数据
user := User{Name: "Alice", Age: 30}
// 执行模板
err = t.Execute(os.Stdout, user)
if err != nil {
panic(err)
}
}
输出:
Hello, Alice! You are 30 years old.
常用功能
- 条件语句:
{{if .Condition}}...{{else}}...{{end}}
- 循环:
{{range .Items}}...{{end}}
- 函数:
使用 template.FuncMap 注册自定义函数,例如 {{printf "%s" .Name}}。
注意事项
- 转义:
html/template 会自动转义 HTML 内容,防止 XSS 攻击。
- 错误处理:始终检查解析和执行时的错误。
Golang 模板简洁高效,适用于 Web 开发、代码生成等场景。