本文介绍如何使用 Go 的 html/template 包结合 {{range}} 动态渲染未知长度的结构体切片,生成 HTML 表格或列表,避免硬编码行数,实现数据驱动的模板渲染。
本文介绍如何使用 go 的 `html/template` 包结合 `{{range}}` 动态渲染未知长度的结构体切片,生成 html 表格或列表,避免硬编码行数,实现数据驱动的模板渲染。
在 Go Web 开发中,将结构化数据(如 []struct{})安全、清晰地渲染为 HTML 是常见需求。核心在于利用模板引擎的 {{range}} 动作——它专为遍历切片、数组、映射或通道设计,可自动为每个元素执行嵌套模板逻辑,无需预知集合长度。
以下是一个完整、可运行的示例,展示如何渲染一个包含多行数据的 HTML 有序列表(可轻松扩展为
):package main
import (
"html/template"
"log"
"os"
)
type Highscore struct {
Name string
Score int
}
func main() {
const tpl = `<ol>
{{range .}}
<li>{{.Name}} — <strong>{{.Score}}</strong> 分</li>
{{end}}
</ol>`
scores := []Highscore{
{Name: "Steve", Score: 50},
{Name: "Jim", Score: 40},
{Name: "Alice", Score: 62},
}
t, err := template.New("highscore").Parse(tpl)
if err != nil {
log.Fatal("解析模板失败:", err)
}
if err := t.Execute(os.Stdout, scores); err != nil {
log.Fatal("执行模板失败:", err)
}
}
输出结果:
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
<ol>
<li>Steve — <strong>50</strong> 分</li>
<li>Jim — <strong>40</strong> 分</li>
<li>Alice — <strong>62</strong> 分</li>
</ol>
✅ 关键要点说明:
- {{range .}} 中的 . 表示传入模板的根数据(此处为 []Highscore 切片),循环内部的 . 即当前迭代的单个 Highscore 实例;
- 若需在表格中使用,只需将
替换为 ,- 替换为
| {{.Name}} |
{{.Score}} |
;
- Go 模板会自动转义 HTML 特殊字符(如 ),保障 XSS 安全;若需原样输出 HTML,使用 {{.FieldName|safeHTML}}(需导入 html/template 并确保内容可信);
- 支持嵌套结构访问,例如 {{.User.Profile.AvatarURL}};
- 可配合 {{else}} 处理空切片:{{range .}}{{else}}
| 暂无数据 |
{{end}}。
总结:{{range}} 是 Go 模板实现动态重复渲染的基石。掌握其语法与上下文规则,即可高效构建数据驱动的 HTML 页面,无需拼接字符串或依赖第三方模板引擎。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!