Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan ralat "tugasan untuk masuk dalam peta nil" dalam golang?

Bagaimana untuk menyelesaikan ralat "tugasan untuk masuk dalam peta nil" dalam golang?

WBOY
WBOYasal
2023-06-24 16:26:391945semak imbas

Dalam proses menggunakan golang untuk pembangunan, kita sering menghadapi ralat "tugasan untuk masuk dalam peta nihil". Ralat ini sering berlaku apabila kami cuba memasukkan pasangan nilai kunci ke dalam peta sifar. Dalam artikel ini, kita akan belajar bagaimana untuk mengelakkan kesilapan ini.

Untuk lebih memahami ralat ini, kita perlu memahami dahulu apa itu peta. Dalam golang, peta ialah struktur data yang menyimpan pasangan nilai kunci. Melalui peta, kami boleh mengendalikan pasangan nilai kunci dengan mudah, seperti menambah, mengubah suai, memadam, dsb.

Apabila kami mula-mula mula menggunakan peta, kadangkala coretan kod berikut akan dipaparkan:

var m map[string]int
m["one"] = 1

Dalam kod ini, kami mula-mula mengisytiharkan peta bernama m, dan kemudian cuba menambah pasangan nilai kunci "one:1" ke dalam peta . Walau bagaimanapun, menjalankan kod ini akan mendapat mesej ralat berikut:

panic: assignment to entry in nil map

Ralat ini menunjukkan bahawa kami cuba menambah pasangan nilai kunci pada peta sifar, yang tidak dibenarkan. Jadi, bagaimana untuk mengelakkan kesilapan ini?

Pertama, kita boleh memulakan peta melalui fungsi make, seperti yang ditunjukkan di bawah:

m := make(map[string]int)
m["one"] = 1

Dalam kod contoh ini, kita menggunakan fungsi make untuk memulakan peta, dan kemudian kita boleh menambah pasangan nilai kunci padanya. Melakukan ini akan mengelakkan ralat "tugasan untuk masuk dalam peta kosong".

Selain itu, apabila kita perlu menambah pasangan nilai kunci pada peta sedia ada, kita perlu menyemak dahulu sama ada peta itu kosong. Jika ia kosong, kita perlu memulakannya dahulu dan kemudian mengendalikannya. Kod sampel adalah seperti berikut:

var m map[string]int
if m == nil {
    m = make(map[string]int)
}
m["one"] = 1

Akhir sekali, kami juga boleh menggunakan sync.Map untuk mengelakkan ralat ini. sync.Map ialah pelaksanaan peta selamat-benang yang disediakan dalam pustaka standard golang Ia boleh mengendalikan situasi peta sifar secara automatik, dengan itu mengelakkan ralat "tugasan untuk masuk dalam peta sifar". Kod sampel adalah seperti berikut:

var m sync.Map
m.Store("one", 1)

Ringkasnya, ralat "tugasan untuk masuk dalam peta kosong" adalah salah satu ralat biasa dalam proses pembangunan golang Kita perlu mengelakkan ralat ini dengan memulakan peta dan menyemak sama ada peta kosong. Selain itu, kami juga boleh menggunakan sync.Map untuk mengelakkan ralat ini.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat "tugasan untuk masuk dalam peta nil" dalam golang?. 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