Go语言的text/template包通过{{}}语法将数据与模板结合,支持变量引用、条件判断、循环及自定义函数。使用.访问根对象字段,如{{.Name}};通过{{if}}{{else}}{{end}}实现条件渲染,{{range}}{{end}}遍历数据;可注册FuncMap添加函数扩展功能,如{{mail .Email}};完整示例展示结构体数据渲染为文本,最终输出动态内容。掌握这些即可高效生成HTML、配置文件等文本。

Go语言中的
text/template包提供了一种强大而灵活的方式来生成文本输出,常用于生成HTML、配置文件、源代码等。模板通过将数据结构与模板字符串结合,动态渲染出最终的文本内容。
模板基本语法与变量引用
在Go模板中,使用双大括号
{{}}来插入变量或执行操作。根对象用.表示,可以访问结构体字段、map键值、切片元素等。
例如:
Hello, {{.Name}}! You are {{.Age}} years old.
对应的数据结构:
立即学习“go语言免费学习笔记(深入)”;
type Person struct {
Name string
Age int
}
data := Person{Name: "Alice", Age: 25}
渲染时,
.Name和
.Age会被替换为实际值。
控制结构:条件判断与循环
模板支持
if、
range等控制语句,用于处理逻辑分支和遍历数据。
示例模板:
{{if .LoggedIn}}
Welcome back, {{.UserName}}!
{{else}}
Please log in.
{{end}}
-
{{range .Items}}
- {{.}} {{end}}
当
LoggedIn为
true时显示欢迎信息,否则提示登录。
range用于遍历
Items切片并生成列表项。
AiFreePhp(爱免费php企业建站程序是一个免费开源的PHP建站程序),基于PHP + MYSQL 与模板技术,具有产品展示,文章栏目,下载管理,友情链接等功能。无任何限制功能,程序简单实用,可用于中小企业网站建设,不收取任何费用。使用本程序,不可将程序变相转售,二次开发发布。 运行安装目/install/index.php一般要求安装在站点的根目录,不是根目录有试过有没有问题,请大家尽量以
函数调用与自定义函数
可以在模板中调用预定义或自定义函数。Go模板允许注册函数映射(FuncMap),扩展模板能力。
示例:
func formatEmail(email string) string {
return "" + email + ""
}
funcMap := template.FuncMap{
"mail": formatEmail,
}
t := template.New("example").Funcs(funcMap)
t, _ = t.Parse("Contact: {{mail .Email}}")
注册一个
{{mail .Email}}生成邮件链接。
完整使用示例
下面是一个完整的程序示例:
package mainimport ( "os" "text/template" )
type User struct { Name string Admin bool Posts []string }
func main() { const tmpl = ` Hello {{.Name}}, You are {{if .Admin}}an admin{{else}}a regular user{{end}}.
Your posts: {{range .Posts}}- {{.}} {{end}} `
user := User{ Name: "Bob", Admin: true, Posts: []string{"First post", "Go templates"}, } t := template.Must(template.New("user").Parse(tmpl)) t.Execute(os.Stdout, user)}
运行结果:
Hello Bob, You are an admin.Your posts:
- First post
- Go templates
基本上就这些。掌握变量引用、控制结构和自定义函数,就能高效使用Go的文本模板功能。









