Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Melewati Berbilang Objek Data ke Templat Go?

Bagaimanakah Saya Boleh Melewati Berbilang Objek Data ke Templat Go?

Patricia Arquette
Patricia Arquetteasal
2024-12-29 06:35:09471semak imbas

How Can I Pass Multiple Data Objects to a Go Template?

Mengirimkan Berbilang Data ke Templat Go

Dalam Go, apabila mengisi templat, anda boleh menghantar satu nilai, yang boleh menjadi nilai komposit seperti struct, peta atau kepingan.

Untuk menghantar berbilang objek data ke templat:

Menggunakan Struct:

Buat struct yang membenamkan objek data yang diingini sebagai medan yang dieksport:

type Data struct {
    Results []User // MongoDB query result
    Other   []int  // Integer array
}

Lepasi struct ke pelaksanaan templat:

data := &Data{results, []int{1, 2, 3}}
if err := GetTemplate("list").Execute(w, data); err != nil {
    // Handle error
}

Dalam templat:

{{range .Results}}
    User name: {{.Name}}
{{end}}

{{range .Other}}
    {{.}}
{{end}}

Menggunakan Peta:

Buat peta dengan objek data sebagai pasangan nilai kunci:

m := map[string]interface{}{
    "Results": results,
    "Other":   []int{1, 2, 3},
}

Pas peta kepada pelaksanaan templat:

if err := GetTemplate("list").Execute(w, m); err != nil {
    // Handle error
}

Dalam templat:

{{range .Results}}
    User name: {{.Name}}
{{end}}

{{range .Other}}
    {{.}}
{{end}}

Menggunakan Slice:

Walaupun kurang boleh dibaca, anda juga boleh menghantar sekeping antara muka{}:

s := []interface{}{
    results,
    []int{1, 2, 3},
}

Lepaskan kepingan kepada pelaksanaan templat:

if err := GetTemplate("list").Execute(w, s); err != nil {
    // Handle error
}

Dalam templat:

{{range index . 0}}
    User name: {{.Name}}
{{end}}

Other: {{index . 1}}

Nota: Fungsi atau saluran tersuai juga boleh digunakan untuk menghantar berbilang objek data, tetapi dianggap sebagai amalan yang kurang konvensional.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melewati Berbilang Objek Data ke 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