Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mengelakkan Ralat 'tugasan untuk masuk dalam peta kosong' Semasa Mencipta Potongan Peta dalam Go?
Tugasan untuk Kemasukan dalam Ralat Peta Tiada: Mencipta Potongan Peta
Apabila cuba mencipta kepingan peta, adalah penting untuk memahami cara ingatan dalam Go diperuntukkan dan diakses. Ralat masa jalan "tugasan kepada entri dalam peta sifar" berlaku apabila cuba memberikan nilai kepada entri peta sifar.
Dalam kod yang disediakan, matlamatnya ialah untuk mencipta sekeping peta dengan setiap peta mengandungi dua indeks : "Id" dan "Pelabur." Pendekatan awal melibatkan membuat tatasusunan peta:
invs := make([]map[string]string, length)
Walau bagaimanapun, ini mengakibatkan ralat panik kerana kepingan invs pada mulanya mengandungi peta kosong. Untuk membetulkannya, pengisytiharan yang betul ialah:
a := make([]map[string]int, 100)
yang memulakan setiap elemen hirisan dengan peta kosong.
Seterusnya, kod itu berulang melalui peta dan mengisinya dengan data:
for i := 0; i < length; i++ { invs[i] = make(map[string]string) invs[i]["Id"] = inv_ids[i] invs[i]["Investor"] = inv_names[i] }
Pendekatan ini mencipta peta untuk setiap entri dalam kepingan. Walau bagaimanapun, cara yang lebih ringkas untuk mengisi peta adalah menggunakan literal komposit:
invs[i] = map[string]string{"Id": inv_ids[i], "Investor": inv_names[i]}
yang mencipta peta yang sudah diisi.
Untuk pendekatan yang lebih idiomatik, pertimbangkan untuk menggunakan struct untuk mewakili pelabur:
type Investor struct { Id int Name string }
dan kemudian mencipta sebahagian daripada pelabur:
a := make([]Investor, 100) for i := 0; i < 100; i++ { a[i] = Investor{Id: i, Name: "John" + strconv.Itoa(i)} }
Pendekatan ini menyediakan cara yang lebih bersih dan selamat jenis untuk mewakili data pelabur.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Ralat 'tugasan untuk masuk dalam peta kosong' Semasa Mencipta Potongan Peta dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!