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
Lepaskan: 2024-12-14 09:56:12
asal
830 orang telah melayarinya

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

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

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!

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