Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengendalikan Peta Bersarang dengan Selamat dalam Go dan Mengelakkan Ralat Masa Jalan?
Peta Bersarang di Golang
Di Golang, peta bersarang boleh digunakan untuk mencipta struktur data hierarki. Walau bagaimanapun, beberapa gelagat yang tidak dijangka boleh berlaku apabila bekerja dengan peta bersarang.
Sokongan Kurungan Berbilang
Go menyokong berbilang kurungan untuk mengakses peta bersarang. Sebagai contoh, kod berikut berjaya mencetak nilai yang dikaitkan dengan kunci "w":
func main() { var data = map[string]map[string]string{} data["a"]["w"] = "x" data["b"]["w"] = "x" data["c"]["w"] = "x" fmt.Println(data) }
Peta Nihil
Isu timbul apabila peta bersarang tidak dimulakan. Nilai sifar untuk jenis peta ialah sifar. Mengindeks peta sifar akan mengakibatkan ralat masa jalan. Sebagai contoh, jika kod di atas diubah suai seperti berikut:
func main() { var data = map[string]map[string]string{} data["a"]["w"] = "x" data["b"]["w"] = "x" data["c"]["w"] = "x" fmt.Println(data) }
Atur cara akan gagal dengan ralat:
panic: runtime error: assignment to entry in nil map
Untuk menyelesaikan isu ini, peta bersarang mesti dimulakan sebelum memberikan nilai kepada entrinya:
func main() { var data = map[string]map[string]string{} data["a"] = map[string]string{} data["b"] = make(map[string]string) data["c"] = make(map[string]string) data["a"]["w"] = "x" data["b"]["w"] = "x" data["c"]["w"] = "x" fmt.Println(data) }
Sebagai alternatif, literal komposit boleh digunakan untuk memulakan bersarang peta:
func main() { var data = map[string]map[string]string{ "a": map[string]string{}, "b": map[string]string{}, "c": map[string]string{}, } data["a"]["w"] = "x" data["b"]["w"] = "x" data["c"]["w"] = "x" fmt.Println(data) }
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Peta Bersarang dengan Selamat dalam Go dan Mengelakkan Ralat Masa Jalan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!