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!