登录
首页 >  Golang >  Go教程

Golang模板渲染教程与代码示例

时间:2026-02-25 18:36:42 349浏览 收藏

Go语言的text/template包提供了一套简洁而强大的文本模板渲染机制,通过{{}}语法无缝嵌入变量、条件判断({{if}}/{{else}})、循环遍历({{range}})以及自定义函数(如{{mail .Email}}),轻松将结构化数据(如结构体、切片、map)动态转换为HTML、配置文件、邮件内容等任意文本格式;文中结合清晰语法说明与可直接运行的完整示例,手把手带你从基础引用到高级扩展,快速掌握这一在Web开发、代码生成和运维自动化中高频使用的实用技能。

Golangtemplate文本模板渲染与使用示例

Go语言中的text/template包提供了一种强大而灵活的方式来生成文本输出,常用于生成HTML、配置文件、源代码等。模板通过将数据结构与模板字符串结合,动态渲染出最终的文本内容。

模板基本语法与变量引用

在Go模板中,使用双大括号{{}}来插入变量或执行操作。根对象用.表示,可以访问结构体字段、map键值、切片元素等。

例如:

Hello, {{.Name}}! You are {{.Age}} years old.

对应的数据结构:

type Person struct {
    Name string
    Age  int
}
data := Person{Name: "Alice", Age: 25}

渲染时,.Name.Age会被替换为实际值。

控制结构:条件判断与循环

模板支持ifrange等控制语句,用于处理逻辑分支和遍历数据。

示例模板:

{{if .LoggedIn}}
Welcome back, {{.UserName}}!
{{else}}
Please log in.
{{end}}
    {{range .Items}}
  • {{.}}
  • {{end}}

LoggedIntrue时显示欢迎信息,否则提示登录。range用于遍历Items切片并生成列表项。

函数调用与自定义函数

可以在模板中调用预定义或自定义函数。Go模板允许注册函数映射(FuncMap),扩展模板能力。

示例:

func formatEmail(email string) string {
    return "<a href='mailto:" + email + "'>" + email + "</a>"
}
<p>funcMap := template.FuncMap{
"mail": formatEmail,
}</p><p>t := template.New("example").Funcs(funcMap)
t, _ = t.Parse("Contact: {{mail .Email}}")</p>

注册一个mail函数后,可在模板中直接使用{{mail .Email}}生成邮件链接。

完整使用示例

下面是一个完整的程序示例:

package main
<p>import (
"os"
"text/template"
)</p><p>type User struct {
Name  string
Admin bool
Posts []string
}</p><p>func main() {
const tmpl = `
Hello {{.Name}},
You are {{if .Admin}}an admin{{else}}a regular user{{end}}.</p><p>Your posts:
{{range .Posts}}- {{.}}
{{end}}
`</p><pre class="brush:php;toolbar:false;">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.
<p>Your posts:</p>
  • First post
  • Go templates

基本上就这些。掌握变量引用、控制结构和自定义函数,就能高效使用Go的文本模板功能。

本篇关于《Golang模板渲染教程与代码示例》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>