Golang Template模板引擎

最近在学习Golang的Template模板引擎,但在实际使用中遇到了一些问题。比如如何在不同模板之间共享变量?还有如何在模板中使用自定义函数?另外,当模板解析失败时,有没有更好的调试方法?希望有经验的朋友能分享一下最佳实践和使用技巧。

2 回复

Golang Template是Go语言内置的模板引擎,支持文本和HTML模板。使用text/templatehtml/template包,通过数据驱动生成动态内容。语法简洁,支持变量、循环和条件判断,适用于网页生成和文本格式化。

更多关于Golang Template模板引擎的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Go语言的 html/templatetext/template 包提供了一种安全、高效的模板引擎,用于生成动态内容。html/template 会自动转义 HTML 以防止 XSS 攻击,而 text/template 用于纯文本生成。

基本用法

  1. 定义模板:使用 {{ }} 嵌入动作。
  2. 执行模板:通过 ExecuteExecuteTemplate 方法传入数据。

示例代码:

package main

import (
	"os"
	"text/template"
)

func main() {
	// 定义模板
	tmpl := `Hello, {{.Name}}! You have {{.Count}} new messages.`

	// 解析模板
	t, err := template.New("test").Parse(tmpl)
	if err != nil {
		panic(err)
	}

	// 数据
	data := struct {
		Name  string
		Count int
	}{
		Name:  "Alice",
		Count: 5,
	}

	// 执行模板
	err = t.Execute(os.Stdout, data)
	if err != nil {
		panic(err)
	}
}

输出:Hello, Alice! You have 5 new messages.

常用功能

  • 变量{{$variable := .Field}}
  • 条件判断{{if .Condition}}...{{else}}...{{end}}
  • 循环{{range .Items}}...{{end}}
  • 函数调用{{.Field | printf "%.2f"}}

安全提示

使用 html/template 时,所有输入会自动转义。避免使用 text/template 处理 HTML,以防 XSS 漏洞。

适用于生成 HTML 页面、电子邮件、配置文件等场景。

回到顶部