Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah saya boleh mengulangi kod HTML beberapa kali menggunakan templat Go?

Bagaimanakah saya boleh mengulangi kod HTML beberapa kali menggunakan templat Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-27 06:06:20918semak imbas

How can I repeat HTML code a specified number of times using Go templates?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn