
本文详解如何在 go 中使用 html/template 渲染动态 html 页面,并通过模板变量(如布尔值)控制复选框(checkbox)的勾选状态,实现“提交后保持选中”的常见交互需求。
在 Go Web 开发中,html/template 是渲染服务端 HTML 的核心工具。它支持安全的变量插入、条件判断和循环,尤其适合处理表单状态(如 checkbox 是否勾选)。你提供的 index.html 存在两个关键问题:一是
? 关键说明:
- ✅ {{if .Checked}}checked{{end}} 是推荐写法:当 .Checked 为 true 时输出 checked 字符串,否则不输出任何内容,语义清晰且防 XSS(模板自动转义);
- ❌ 不要写 value="A" {{.checked}}:.checked 若为布尔值会输出 true/false 字符串,而 HTML 中 checked="false" 仍会被浏览器视为已勾选(HTML 属性存在即生效);
- ?
- ? 使用 html/template 而非 text/template,它会自动转义输出,防止 XSS 攻击;
- ? 实际项目中建议将模板预编译(template.Must(template.ParseFiles(...)))并全局复用,提升性能。
总结:Go 的模板系统轻量但强大。掌握 {{if}}, {{.Field}}, 表单方法(r.FormValue)、以及布尔属性的正确渲染方式,就能稳健实现带状态的交互页面——无需前端 JS,纯服务端即可完成“提交后保持勾选”这一经典需求。










