Ich versuche, Schleife als benutzerdefinierte Funktion zu implementieren. Es dauert eine Anzahl von Iterationen und Inhalt zwischen geschweiften Klammern, dann sollte es den Inhalt n-mal in Klammern durchlaufen. Bitte, siehe Beispiel:Golang. Wie man Schleifenfunktion mit html/template-Paket erstellen
main.go
template.Must(template.ParseFiles("palette.html")).Funcs(template.FuncMap{
"loop": func(n int, content string) string {
var r string
for i := 0; i <= n; i++ {
r += content
}
return r
},
}).ExecuteTemplate(rw, index, nil)
index.html
{{define "index"}}
<div class="row -flex palette">
{{loop 16}}
<div class="col-2"></div>
{{end}}
</div>
{{end}}
Ausgabe
<div class="row -flex palette">
<div class="col-2"></div>
<div class="col-2"></div>
<div class="col-2"></div>
<div class="col-2"></div>
... 16 times
</div>
Ist es möglich, es zu implementieren? Die Motivation ist, dass die Standardfunktionalität des text/template
es nicht erlaubt, nur Inhalte zwischen geschweiften Klammern zu iterieren. Ja, wir können es durch range
Aktion durch "außerhalb" Daten gehen.
Gute Idee! Also gibt es keine Möglichkeit, Inhalte aus geschweiften Klammern zu bekommen?) –
Nicht, dass ich mir dessen bewusst bin. – Innominate
Wenn Sie die Slice-Elemente nicht verwenden, ist es effizienter, eine leere Struktur zu verwenden. http://play.golang.org/p/_jRV62bOB3 Auf diese Weise ordnen Sie nur einen Schichtkopf (konstante Größe) anstelle von n Elementen zu. – Logiraptor