Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Lulus Berbilang Nilai Antara Templat Go?

Bagaimana untuk Lulus Berbilang Nilai Antara Templat Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-04 16:33:10357semak imbas

How to Pass Multiple Values Between Go Templates?

Melalui Berbilang Nilai Antara Templat Go

Apabila bekerja dengan templat Go, anda mungkin perlu menghantar berbilang nilai antara templat. Walau bagaimanapun, tindakan {{template}} pakej teks/template hanya menyokong penghantaran nilai data pilihan tunggal. Ini menimbulkan persoalan tentang cara memindahkan berbilang elemen data dengan berkesan. Satu pendekatan adalah untuk menyatukan data menjadi satu nilai. Go menyediakan dua pilihan: membungkus data ke dalam struct atau menggunakan peta.

Membungkus Ke Dalam Struktur

Salah satu kaedah ialah mencipta struct yang merangkum data yang anda ingin pindahkan. Struktur ini kemudiannya boleh dihantar ke templat dan digunakan dengan notasi titik untuk mengakses elemen data individu dalam templat. Berikut ialah contoh:

type DataWrapper struct {
    Shops      []Destination
    CityName   string
    RegionName string
}

Membungkus ke dalam Peta

Jika menggunakan struct menyusahkan, anda juga boleh membungkus data ke dalam peta mudah. Kekunci peta akan mewakili nama elemen data, dan nilai peta akan menjadi nilai data sebenar. Berikut ialah contoh:

func Wrap(shops []Destination, cityName, regionName string) map[string]interface{} {
    return map[string]interface{}{
        "Shops":      shops,
        "CityName":   cityName,
        "RegionName": regionName,
    }
}

Menyepadukan Dengan Fungsi Tersuai

Setelah anda membungkus data anda ke dalam struct atau peta, anda boleh menggunakan fungsi tersuai untuk menghantar data ini kepada templat. Fungsi tersuai boleh didaftarkan dengan kaedah Template.Funcs() dan anda mesti melakukan ini sebelum menghuraikan teks templat. Berikut ialah contoh menggunakan fungsi tersuai untuk menghantar data:

const src = `
{{define "data"}}
    City: {{.CityName}}, Region: {{.RegionName}}, Shops: {{.Shops}}
{{end}}
{{- range . -}}
        {{$city:=.Name}}
        {{- range .Regions -}}
              {{$region:=.Name}}
              {{- template "data" (Wrap .Shops $city $region) -}}
        {{end}}
{{- end}}`

Kesimpulan

Dengan menstruktur data anda menjadi satu nilai dan menggunakan fungsi tersuai, anda boleh menghantar berbilang nilai dengan berkesan antara templat Go . Ini membolehkan anda berkongsi struktur data yang kompleks dengan cekap antara bahagian berlainan templat anda, meningkatkan kefleksibelan dan kebolehselenggaraan aplikasi web Go anda.

Atas ialah kandungan terperinci Bagaimana untuk Lulus Berbilang Nilai Antara 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