web-dev-qa-db-fra.com

Comment comparer la longueur d'une liste en html / template dans golang?

J'essaie de comparer la longueur d'une liste dans golang html/template. Mais il se charge pour toujours en html.

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

Quelqu'un pourrait-il m'aider avec ça?

20
Dany

De la documentation,

{{if pipeline}} T1 {{end}}: Si la valeur du pipeline est vide, aucune sortie n'est générée; sinon, T1 est exécuté. Les valeurs vides sont false, 0, tout pointeur nul ou valeur d'interface, et tout tableau, tranche, carte ou chaîne de longueur zéro. Le point n'est pas affecté.

Donc, si vous voulez vérifier si le .SearchData slice/array/map est vide, utilisez simplement,

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

Même votre code fonctionne correctement si la chaîne "0" est remplacé par int 0

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

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

44
Aruna Herath

Une version plus courte

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

Il y a {{ else }} pour {{ range }} Fonctionne aussi bien pour les cartes https://play.golang.org/p/7xJ1LXL2u09 :

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