Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyelesaikan Ralat 'alamat memori tidak sah atau penolakan penunjuk nil' Semasa Memetakan Struktur dalam Go?

Bagaimana untuk Menyelesaikan Ralat 'alamat memori tidak sah atau penolakan penunjuk nil' Semasa Memetakan Struktur dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-14 09:56:12832semak imbas

How to Resolve

Menyahpepijat "alamat memori tidak sah atau penyahrujukan penunjuk tiada" Ralat dalam Operasi Pemetaan

Apabila mengakses medan struct dalam peta, seseorang mungkin menghadapi ralat "alamat memori tidak sah atau tiada rujukan penunjuk". Isu ini lazimnya timbul apabila cuba menyahrujuk penuding nol.

Dalam contoh khusus yang disediakan:

condition := map[string]*guardduty.Condition{}
condition["id"].Equals = strPtr

Keadaan peta dimulakan sebagai peta kosong penunjuk kepada *guardduty.Condition structs . Akibatnya, mengakses syarat["id"] tanpa memulakannya terlebih dahulu akan mengembalikan nilai sifar, yang tidak boleh dinyahrujuk untuk menetapkan medan Equals.

Untuk menyelesaikan isu ini, anda boleh menyemak dahulu sama ada kunci itu wujud dalam peta menggunakan pendekatan berikut:

if cond, ok := condition["id"]; !ok { // <nil> false
    log.Println("Pointer is null")
} else {
    // Init new guardduty.Condition
    // and assign to required key
    nc := &guardduty.Condition{Equals: strPtr}
    condition["id"] = nc
}

Dengan melakukan semakan ini, anda boleh memastikan bahawa penunjuk tidak sifar sebelum cuba menyahrujuknya dan menetapkan Sama dengan medan.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'alamat memori tidak sah atau penolakan penunjuk nil' Semasa Memetakan Struktur dalam Go?. 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