Melalui Berbilang Nilai Antara Templat
Dalam templat Go, tindakan {{template}} hanya mengambil satu hujah pilihan. Untuk menghantar berbilang nilai, ia mesti dirangkumkan dalam satu nilai.
Data Mengekapkan
Satu pendekatan ialah menggunakan fungsi pembalut yang menerima nilai yang dikehendaki dan mengembalikan nilai tunggal. Sebagai contoh, kami boleh mencipta fungsi pembungkus untuk data Bandar dan Wilayah kami:
func Wrap(shops []Destination, cityName, regionName string) map[string]interface{} { return map[string]interface{}{ "Shops": shops, "CityName": cityName, "RegionName": regionName, } }
Mendaftarkan Fungsi Pembungkus
Fungsi tersuai boleh didaftarkan menggunakan Templat.Fungsi (). Ini mesti dilakukan sebelum menghuraikan templat:
t := template.Must(template.New("cities.gohtml").Funcs(template.FuncMap{ "Wrap": Wrap, }).Parse(src))
Templat Diubah Suai
Templat kemudiannya boleh diubah suai untuk memanggil fungsi Wrap() dan menghantar hasilnya kepada {{template}} tindakan:
{{define "data"}} City: {{.CityName}}, Region: {{.RegionName}}, Shops: {{.Shops}} {{end}} {{- range . -}} {{$city:=.Name}} {{- range .Regions -}} {{$region:=.Name}} {{- template "data" (Wrap .Shops $city $region) -}} {{end}} {{- end}}
Contoh
Berikut ialah contoh menggunakan struktur Bandar dan Wilayah yang disediakan dalam soalan:
t := template.Must(template.New("cities.gohtml").Funcs(template.FuncMap{ "Wrap": Wrap, }).Parse(src)) CityWithSomeData := []City{ { Name: "CityA", Regions: []Region{ {Name: "CA-RA", Shops: []Destination{{"CA-RA-SA"}, {"CA-RA-SB"}}}, {Name: "CA-RB", Shops: []Destination{{"CA-RB-SA"}, {"CA-RB-SB"}}}, }, }, { Name: "CityB", Regions: []Region{ {Name: "CB-RA", Shops: []Destination{{"CB-RA-SA"}, {"CB-RA-SB"}}}, {Name: "CB-RB", Shops: []Destination{{"CB-RB-SA"}, {"CB-RB-SB"}}}, }, }, } if err := t.ExecuteTemplate(os.Stdout, "cities.gohtml", CityWithSomeData); err != nil { panic(err) }
Output:
City: CityA, Region: CA-RA, Shops: [{CA-RA-SA} {CA-RA-SB}] City: CityA, Region: CA-RB, Shops: [{CA-RB-SA} {CA-RB-SB}] City: CityB, Region: CB-RA, Shops: [{CB-RA-SA} {CB-RA-SB}] City: CityB, Region: CB-RB, Shops: [{CB-RB-SA} {CB-RB-SB}]
Atas ialah kandungan terperinci Bagaimana untuk Meluluskan Berbilang Nilai kepada Tindakan {{template}} Templat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!