Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Mengelakkan Panik Masa Jalanan Apabila Menggunakan Peta Bersarang dalam Go?
Dalam Go, peta ialah struktur data yang berkuasa yang membolehkan anda menyimpan pasangan nilai kunci. Peta bersarang, yang mana nilainya ialah peta sendiri, boleh menjadi cara yang berguna untuk menyusun data yang kompleks.
Walau bagaimanapun, sesetengah pembangun telah menghadapi masalah semasa bekerja dengan peta bersarang. Sebagai contoh, coretan kod berikut berjaya dijalankan:
func main() { var data = map[string]string{} data["a"] = "x" data["b"] = "x" data["c"] = "x" fmt.Println(data) }
Dan begitu juga dengan yang berikut:
func main() { var data = map[string][]string{} data["a"] = append(data["a"], "x") data["b"] = append(data["b"], "x") data["c"] = append(data["c"], "x") fmt.Println(data) }
Tetapi kod berikut panik semasa masa jalan:
func main() { var data = map[string]map[string]string{} data["a"]["w"] = "x" data["b"]["w"] = "x" data["c"]["w"] = "x" fmt.Println(data) }
Isu timbul kerana nilai sifar untuk jenis peta dalam Go adalah sifar, menunjukkan bahawa peta itu tidak dimulakan. Percubaan untuk mengakses atau menyimpan nilai dalam peta sifar mengakibatkan panik masa jalan.
Dalam contoh terakhir, peta data (luar) dimulakan, tetapi ia tidak mempunyai entri. Apabila anda mengindeksnya seperti data["a"], memandangkan belum ada entri dengan kunci "a", mengindeks ia mengembalikan nilai sifar jenis nilai, iaitu sifar untuk peta. Menugaskan kepada data"a" kemudian menjadi percubaan untuk menetapkan kepada peta sifar, mengakibatkan panik.
Untuk mengelakkan isu ini, anda mesti memulakan peta sebelum menyimpan elemen di dalamnya . Ini boleh dilakukan dalam beberapa cara:
var data = map[string]map[string]string{ "a": {}, "b": {}, "c": {}, }
var data = make(map[string]map[string]string)
var data = map[string]map[string]string{} data["a"] = map[string]string{} data["b"] = make(map[string]string) data["c"] = make(map[string]string)
Selepas permulaan, anda boleh selamat simpan nilai dalam peta bersarang.
Atas ialah kandungan terperinci Bagaimanakah Saya Mengelakkan Panik Masa Jalanan Apabila Menggunakan Peta Bersarang dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!