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

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

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

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

函数后,可在模板中直接使用

{{mail .Email}}

生成邮件链接。

完整使用示例

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

package main

import ("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

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
GolangUDP通信基础与数据发送示例
上一篇 2025年12月15日 22:27:38
Go语言:使用archive/zip包进行数据压缩与文件打包
下一篇 2025年12月15日 22:27:50

相关推荐

发表回复

登录后才能评论
关注微信