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
Linda Hamiltonasal
2024-12-12 21:06:23934semak imbas

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)
}

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!

Kenyataan:
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