
在 Go 的 html/template 中,可通过 {{if not .Slice}} 直接判断切片是否为空,或用 {{if eq (len .Slice) 0}} 显式比较长度;注意避免将整数 0 写成字符串 "0",否则比较永远失败。
在 go 的 html/template 中,可通过 `{{if not .slice}}` 直接判断切片是否为空,或用 `{{if eq (len .slice) 0}}` 显式比较长度;注意避免将整数 0 写成字符串 `"0"`,否则比较永远失败。
在 Go 模板中判断数据集合(如切片、数组、map 或字符串)是否为空,是前端渲染中的常见需求。但需注意:Go 模板的 if 动作会将“空值”(empty value)自动视为 false,包括长度为 0 的切片——因此最简洁、推荐的方式是直接使用 {{if not .SearchData}}:
{{if not .SearchData}}
<p>Sorry. No matching results found</p>
{{end}}该写法语义清晰、性能高效,且无需额外变量或函数调用。它依赖模板引擎对“空值”的定义:nil、零长度切片/数组/map/字符串、数值 0、布尔 false 均被视为空。
若需显式获取并比较长度(例如做范围判断:len > 5),可使用内置函数 len,但务必确保类型匹配:
✅ 正确(整数比较):
立即学习“前端免费学习笔记(深入)”;
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
{{ $length := len .SearchData }}
{{ if eq $length 0 }}
<p>Sorry. No matching results found</p>
{{ end }}❌ 错误(字符串 "0" 与整数 0 类型不匹配,恒为 false):
{{ if eq $length "0" }} <!-- 永远不成立 -->此外,也可将 len 调用直接嵌入条件中,减少中间变量:
{{ if eq (len .SearchData) 0 }}
<p>Sorry. No matching results found</p>
{{ end }}⚠️ 注意事项:
- .SearchData 必须是可计算长度的类型(slice、array、map、string);若为 nil,len 仍安全返回 0;
- 避免在模板中进行复杂逻辑,长度判断应尽量轻量;业务逻辑建议前置到 Go 处理器中;
- 模板中无类型转换函数,"0" 和 0 不可互换,比较前请确认操作数类型一致。
综上,优先使用 {{if not .SearchData}} 判断空值;仅当需多条件分支(如 {{if lt (len .Items) 3}})时,再显式调用 len 并确保数值比较。

















