4.6 文本和HTML模板
模板语法
模板由普通文本和 {{action}} 组成。. 表示当前值,| 是管道操作符。
const templ = `{{.TotalCount}} issues:
{{range .Items}}----------------------------------------
Number: {{.Number}}
User: {{.User.Login}}
Title: {{.Title | printf "%.64s"}}
Age: {{.CreatedAt | daysAgo}} days
{{end}}`
使用流程
分两步:解析模板 + 执行模板。
report, err := template.New("report").
Funcs(template.FuncMap{"daysAgo": daysAgo}).
Parse(templ)
template.Must 解析失败直接 panic,省去手动检查。
html/template 与自动转义
html/template API 与 text/template 相同,但会自动转义 HTML 特殊字符,防止 XSS。若需要输出原始 HTML,用 template.HTML 类型标记为受信任内容。
要点
text/template输出纯文本,html/template输出 HTML 并自动转义- 模板语言支持
.字段访问、|管道、range循环、if-else Funcs()注册自定义函数后才能在模板中调用