Mengulang Kod HTML dengan Templat Go
Dalam pembangunan web dengan Go, terdapat keadaan di mana anda mungkin perlu mengulangi baris HTML yang ditentukan bilangan kali. Mari kita terokai cara untuk mencapai ini menggunakan templat Go.
Menggunakan {{range}} Tindakan
Untuk mengulangi sebahagian HTML dalam templat Go, kami boleh menggunakan tindakan {{range}}. Walau bagaimanapun, tindakan ini memerlukan objek boleh lelar, seperti hirisan, tatasusunan atau peta.
Melalui Slice Nilai Sifar
Daripada mencipta struktur data sebenar , kita boleh melepasi kepingan nilai sifar yang pada asasnya tidak mempunyai memori yang diperuntukkan. Potongan ini bertindak sebagai pemegang tempat untuk tindakan {{range}} untuk berulang. Contohnya:
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) }
Output:
<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>
Menggunakan Slice Terisi
Jika anda perlu memulakan indeks di nilai selain sifar, pertimbangkan untuk mengisi kepingan dengan nilai yang diingini dan kemudian berulang ia.
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) }
Output:
<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>
Menggunakan Slice Nilai Sifar dan Fungsi Tersuai
Pendekatan alternatif adalah dengan mendaftarkan fungsi tersuai yang menambah nombor tertentu dan mengembalikan hasilnya. Ini membolehkan anda menggunakan kepingan nilai sifar dan memanggil fungsi dalam templat untuk mendapatkan nombor yang diingini.
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>`
Output:
<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>
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengulangi kod HTML beberapa kali menggunakan templat Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!