web-dev-qa-db-ja.com

golangのhtml / templateのリストの長さを比較する方法は?

Golang html/templateのリストの長さを比較しようとしています。しかし、それはhtmlで永久にロードされます。

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

誰もこれで私を助けることができますか?

20
Dany

ドキュメントから、

{{if pipeline}} T1 {{end}}:パイプラインの値が空の場合、出力は生成されません。それ以外の場合、T1が実行されます。空の値は、false、0、nilポインターまたはインターフェイス値、および配列、スライス、マップ、または長さがゼロの文字列です。ドットは影響を受けません。

したがって、.SearchData slice/array/mapは空であるだけで、

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

文字列"0"はint 0

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

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

44
Aruna Herath

短いバージョン

{{ if eq (len .SearchData) 0 }}
    Sorry. No matching results found
{{ end }}
34
emicklei

がある {{ else }} ために {{ range }}マップでも同様に機能します https://play.golang.org/p/7xJ1LXL2u09

{{range $item := . }}    
    <span>{{ $item }}</span>
{{ else }}
    <span>Sorry no rows here</span>
{{ end }}
5
Oleg Neumyvakin