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.
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 }
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, } }
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}}`
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!