Rumah > Artikel > pembangunan bahagian belakang > Perkara yang perlu diambil perhatian apabila fungsi Golang menerima parameter peta
Apabila menghantar peta ke fungsi dalam Go, salinan akan dibuat secara lalai dan pengubahsuaian pada salinan tidak akan menjejaskan peta asal. Jika anda perlu mengubah suai peta asal, anda boleh menghantarnya melalui penuding. Peta kosong perlu dikendalikan dengan berhati-hati kerana ia secara teknikal adalah penunjuk sifar dan menghantar peta kosong kepada fungsi yang menjangkakan peta tidak kosong akan menyebabkan ralat.
Perkara yang perlu diberi perhatian apabila fungsi Go menerima parameter peta
Dalam Go, apabila menghantar peta kepada fungsi sebagai parameter, terdapat beberapa langkah berjaga-jaga jika tidak diberi perhatian, ia mungkin membawa kepada hasil yang tidak dijangka.
Copy Passing
Apabila menghantar peta ke fungsi, salinan dibuat secara lalai. Dalam erti kata lain, peta dalam fungsi ialah salinan peta parameter, dan sebarang pengubahsuaian pada salinan tidak akan menjejaskan peta asal.
Kes praktikal 1:
func modifyMap(m map[string]int) { m["key"] = 100 } func main() { m := make(map[string]int) modifyMap(m) fmt.Println(m) // 输出:{} }
Seperti yang ditunjukkan dalam contoh, pengubahsuaian yang dibuat pada peta oleh fungsi modifyMap
tidak akan menjejaskan peta asal. modifyMap
函数对 map 做出的修改不会影响原始 map。
避免副本传递
如果需要修改原始 map,可以使用指针来传递。当传递指针时,函数内的 map 指向原始 map 的内存地址。
实战案例 2:
func modifyMap(m *map[string]int) { (*m)["key"] = 100 } func main() { m := make(map[string]int) modifyMap(&m) fmt.Println(m) // 输出:{key: 100} }
如示例所示,modifyMap
Elakkan salinan lulus
Jika anda perlu mengubah suai peta asal, anda boleh menggunakan penunjuk untuk melepasinya. Apabila melewati penunjuk, peta dalam fungsi menghala ke alamat memori peta asal.Kes Praktikal 2:
func printMap(m map[string]int) { for k, v := range m { fmt.Println(k, v) } } func main() { var m map[string]int // 空 map printMap(m) // 运行时错误:panic: runtime error: invalid memory address or nil pointer dereference }Seperti yang ditunjukkan dalam contoh, pengubahsuaian yang dibuat pada peta oleh fungsi
modifyMap
akan menjejaskan peta asal.
Peta kosong
Berhati-hati apabila menghantar peta kosong ke fungsi. Peta kosong secara teknikalnya adalah penunjuk sifar, bukan peta yang sah. Oleh itu, jika fungsi menjangkakan peta bukan kosong, ralat mungkin berlaku apabila menghantar peta kosong.Atas ialah kandungan terperinci Perkara yang perlu diambil perhatian apabila fungsi Golang menerima parameter peta. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!