Как сравнить длину списка в html/template в golang?

Я пытаюсь сравнить длину списка в golang html/template. Но он загружается навсегда в HTML.

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

Может ли кто-нибудь помочь мне с этим?

3 ответа

Решение

Из документации,

{{if pipe}} T1 {{end}}: если значение конвейера пустое, выходные данные не генерируются; в противном случае T1 выполняется. Пустыми значениями являются false, 0, любой нулевой указатель или значение интерфейса, а также любой массив, фрагмент, карта или строка нулевой длины. Точка не затронута.

Так что если вы хотите проверить, если .SearchData ломтик / массив / карта пуста, просто используйте,

{{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

Более короткая версия

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

Есть {{ else }} за {{ range }} Хорошо работает и для карт https://play.golang.org/p/7xJ1LXL2u09:

{{range $item := . }}    
    <span>{{ $item }}</span>
{{ else }}
    <span>Sorry no rows here</span>
{{ end }}
Другие вопросы по тегам