I am trying to implement loop as a custom function. It takes the number of iterations and contents between braces, then it must iterate over the contents between brackets n times. Example:
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}}
Exit
<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>
Is it possible to implement it? The motivation is that the standard text/template functionality does not allow you to simply iterate over the contents between a curly brace. Yes, we can do this through the range action, passing through the "external" data.
source share