Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengendalikan Peta Bersarang dengan Selamat dalam Go dan Mengelakkan Ralat Masa Jalan?

Bagaimana untuk Mengendalikan Peta Bersarang dengan Selamat dalam Go dan Mengelakkan Ralat Masa Jalan?

Linda Hamilton
Lepaskan: 2024-12-12 21:06:23
asal
950 orang telah melayarinya

How to Safely Handle Nested Maps in Go and Avoid Runtime Errors?

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)
}
Salin selepas log masuk
Salin selepas log masuk

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)
}
Salin selepas log masuk
Salin selepas log masuk

Atur cara akan gagal dengan ralat:

panic: runtime error: assignment to entry in nil map
Salin selepas log masuk

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)
}
Salin selepas log masuk

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)
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan