Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menggunakan Peta Bersarang dengan Selamat dalam Go dan Mengelakkan Panik Masa Jalanan?

Bagaimanakah Saya Boleh Menggunakan Peta Bersarang dengan Selamat dalam Go dan Mengelakkan Panik Masa Jalanan?

Linda Hamilton
Linda Hamiltonasal
2024-12-02 17:27:101041semak imbas

How Can I Safely Use Nested Maps in Go and Avoid Runtime Panics?

Peta Bersarang dalam Go: Perangkap dan Penyelesaian Biasa

Dalam Go, nilai sifar untuk peta ialah sifar, bermakna peta yang tidak diinisialisasi. Menyimpan nilai dalam peta sifar mengakibatkan panik masa jalan. Ini boleh dilihat dalam contoh berikut:

func main() {
    var data = map[string]map[string]string{}
    data["a"]["w"] = "x"
    println(data)
}

Kod ini akan panik semasa masa jalan dengan ralat "tugasan untuk masuk dalam peta kosong." Untuk mengelakkan isu ini, mulakan peta secara eksplisit sebelum memberikan nilai kepadanya, seperti yang ditunjukkan di bawah:

func main() {
    var data = map[string]map[string]string{}
    data["a"] = make(map[string]string)
    data["a"]["w"] = "x"
    println(data)
}

Dalam contoh ini, make(map[string]string) mencipta peta kosong baharu jenis map[string ]rentetan.

Cara lain untuk memulakan peta bersarang ialah menggunakan literal komposit:

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"
    println(data)
}

Kedua-dua kaedah akan memulakan peta bersarang dengan betul dan membenarkan nilai disimpan tanpa menyebabkan panik masa jalan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Peta Bersarang dengan Selamat dalam Go dan Mengelakkan Panik Masa Jalanan?. 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