Se l'elenco non è vuoto, il frammento Python stampa un punto e virgola dopo l'ultimo elemento. È possibile ottenere lo stesso risultato in Vai circondando l'intervallo con un se per verificare se c'è almeno un elemento nella sezione e la stampa; fuori dal giro.
{{if $hosts}}{{range $host := $hosts}}
{{$host}}
{{ end }} ;{{end}}
Questo snippet funziona perché si sta aggiungendo alla fine dell'ultimo elemento. Una soluzione più generale richiede una funzione modello personalizzata. Ecco un esempio di funzione:
func last(v interface{}, i int) (bool, error) {
rv := reflect.ValueOf(v)
if rv.Kind() != reflect.Slice {
return false, errors.New("not a slice")
}
return rv.Len()-1 == i, nil
}
ed ecco come usarlo nel modello:
{{range $i, $host := $hosts }}
{{$host}}{{if last $hosts $i}} ;{{end}}
{{ end }}
ho postato un a working example of the custom function al parco giochi.
fonte
2014-11-29 21:21:45