Go テンプレートを使用した HTML コードの繰り返し
Go を使用した Web 開発では、指定された HTML 行を繰り返し実行する必要がある場合があります。回数。 Go テンプレートを使用してこれを実現する方法を見てみましょう。
{{range}} アクションの使用
Go テンプレート内で HTML の一部を繰り返すには、次のコマンドを利用できます。 {{range}} アクション。ただし、このアクションにはスライス、配列、マップなどの反復可能なオブジェクトが必要です。
ゼロ値スライスの受け渡し
実際のデータ構造を作成する代わりにの場合、基本的にメモリが割り当てられていないゼロ値のスライスを渡すことができます。このスライスは、{{range}} アクションが反復処理されるプレースホルダーとして機能します。例:
const templ = `<ul> {{range $idx, $e := .}} <li><a href="/?page={{$idx}}">{{$idx}}</a></li> {{end}} </ul>`
tmpl := template.Must(template.New("").Parse(templ)) n := 5 if err := tmpl.Execute(os.Stdout, make([]struct{}, n)); err != nil { panic(err) }
出力:
<ul> <li><a href="/?page=0">0</a></li> <li><a href="/?page=1">1</a></li> <li><a href="/?page=2">2</a></li> <li><a href="/?page=3">3</a></li> <li><a href="/?page=4">4</a></li> </ul>
塗りつぶされたスライスの使用
でインデックスを開始する必要がある場合ゼロ以外の値の場合は、スライスに必要な値を入力して反復処理することを検討してください。
tmpl := template.Must(template.New("").Parse(templ)) n := 5 values := make([]int, n) for i := range values { values[i] = (i + 1) * 2 } if err := tmpl.Execute(os.Stdout, values); err != nil { panic(err) }
出力:
<ul> <li><a href="/?page=2">2</a></li> <li><a href="/?page=4">4</a></li> <li><a href="/?page=6">6</a></li> <li><a href="/?page=8">8</a></li> <li><a href="/?page=10">10</a></li> </ul>
ゼロ値スライスとカスタム関数の使用
別のアプローチは、指定された数値をインクリメントして結果を返すカスタム関数。これにより、ゼロ値のスライスを使用し、テンプレート内で関数を呼び出して必要な数値を取得できます。
func main() { tmpl := template.Must(template.New("").Funcs(template.FuncMap{ "Add": func(i int) int { return i + 1 }, }).Parse(templ)) n := 5 if err := tmpl.Execute(os.Stdout, make([]struct{}, n)); err != nil { panic(err) } } const templ = `<ul> {{range $idx, $e := .}}{{$idx := (Add $idx)}} <li><a href="/?page={{$idx}}">{{$idx}}</a></li> {{end}} </ul>`
出力:
<ul> <li><a href="/?page=1">1</a></li> <li><a href="/?page=2">2</a></li> <li><a href="/?page=3">3</a></li> <li><a href="/?page=4">4</a></li> <li><a href="/?page=5">5</a></li> </ul>
以上がGo テンプレートを使用して HTML コードを指定した回数だけ繰り返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。