46

我正在尝试比较 golang html/template 中列表的长度。但它在 html 中永远加载。

{{ $length := len .SearchData }} {{ if eq $length "0" }}
    Sorry. No matching results found
{{ end }}

谁能帮我解决这个问题?

4

3 回答 3

76

从文档中,

{{if pipeline}} T1 {{end}}:如果管道的值为空,则不生成输出;否则,执行 T1。空值是 false、0、任何 nil 指针或接口值,以及任何长度为零的数组、切片、映射或字符串。点不受影响。

所以如果你想检查.SearchData切片/数组/映射是否为空,只需使用,

{{if not .SearchData}} Nothing to show {{end}}

"0"如果 string被 int 替换,即使你的代码也能正常运行0

{{ $length := len .SearchData }} {{ if eq $length 0 }}
    Sorry. No matching results found
{{ end }}

http://play.golang.org/p/Q44qyRbKRB

于 2016-03-13T06:18:28.463 回答
59

较短的版本

{{ if eq (len .SearchData) 0 }}
    Sorry. No matching results found
{{ end }}
于 2016-11-09T13:29:50.470 回答
10

地图也适用{{ else }}https://play.golang.org/p/7xJ1LXL2u09{{ range }}

{{range $item := . }}    
    <span>{{ $item }}</span>
{{ else }}
    <span>Sorry no rows here</span>
{{ end }}
于 2018-01-24T08:32:17.433 回答