Как сравнить длину списка в 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 }}
Более короткая версия
{{ 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 }}