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
切片并生成列表项。
函数调用与自定义函数
可以在模板中调用预定义或自定义函数。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 stringAdmin boolPosts []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的文本模板功能。
以上就是Golangtemplate文本模板渲染与使用示例的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1406673.html
微信扫一扫
支付宝扫一扫