当前位置:首页 > Go > 正文

Go语言模板实战指南(详解条件判断与循环用法)

在使用 Go语言模板 开发 Web 应用或生成动态内容时,掌握模板中的条件判断循环语法至关重要。本文将手把手教你如何在 html/template 包中使用这些功能,即使你是编程小白也能轻松上手!

Go语言模板实战指南(详解条件判断与循环用法) Go语言模板  Go模板条件判断 Go模板循环 Go html/template教程 第1张

一、准备工作:导入 html/template 包

首先,确保你已经安装了 Go 环境,并在代码中导入 html/templateos 包:

package mainimport (    "html/template"    "os")

二、Go模板条件判断(if-else)

在 Go 模板中,你可以使用 {{if ...}} ... {{else}} ... {{end}} 来实现条件判断。注意:Go 模板中的 if 判断的是“真值”——非零值、非空字符串、非 nil 等都为 true。

下面是一个完整示例:

package mainimport (    "html/template"    "os")type User struct {    Name  string    Admin bool}func main() {    tmpl := `<h2>欢迎, {{.Name}}!</h2>{{if .Admin}}    <p style="color: green;">您是管理员</p>{{else}}    <p style="color: gray;">您是普通用户</p>{{end}}`    t := template.Must(template.New("example").Parse(tmpl))    user := User{Name: "小明", Admin: true}    t.Execute(os.Stdout, user)}

运行后,如果 Admintrue,会显示“您是管理员”;否则显示“您是普通用户”。这就是 Go模板条件判断 的基本用法。

三、Go模板循环(range)

要遍历切片(slice)或映射(map),可以使用 {{range ...}} ... {{end}}。在循环体内,. 表示当前元素。

例如,遍历一个用户列表:

package mainimport (    "html/template"    "os")type User struct {    Name  string    Email string}func main() {    tmpl := `<h2>用户列表</h2><ul>{{range .}}    <li>{{.Name}} - {{.Email}}</li>{{end}}</ul>`    users := []User{        {"张三", "zhangsan@example.com"},        {"李四", "lisi@example.com"},        {"王五", "wangwu@example.com"},    }    t := template.Must(template.New("list").Parse(tmpl))    t.Execute(os.Stdout, users)}

输出结果将是一个包含所有用户信息的无序列表。这就是 Go模板循环 的核心用法。

四、组合使用:条件 + 循环

实际开发中,经常需要同时使用条件判断和循环。比如只显示管理员用户:

tmpl := `<h2>管理员列表</h2><ul>{{range .}}    {{if .Admin}}        <li style="color: red;">{{.Name}} (管理员)</li>    {{end}}{{end}}</ul>`

这样就能过滤出符合条件的数据,实现更灵活的模板渲染。

五、小贴士

  • Go 模板会自动转义 HTML 内容以防止 XSS 攻击。如需原样输出,可使用 {{. | safeHTML}}(需自定义函数)。
  • 所有控制结构(if、range 等)必须有对应的 {{end}} 结束标签。
  • 模板变量作用域:在 {{range}} 内部,. 被重新绑定为当前元素。

结语

通过本教程,你已经掌握了 Go html/template教程 中最常用的两个功能:条件判断与循环。无论是构建静态网站生成器还是动态 Web 后端,这些技能都能让你事半功倍。快动手试试吧!

关键词回顾:Go语言模板、Go模板条件判断、Go模板循环、Go html/template教程