Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengelakkan Ralat 'tugasan untuk masuk dalam peta kosong' Semasa Mencipta Potongan Peta dalam Go?

Bagaimana untuk Mengelakkan Ralat 'tugasan untuk masuk dalam peta kosong' Semasa Mencipta Potongan Peta dalam Go?

Patricia Arquette
Lepaskan: 2024-11-05 16:23:02
asal
628 orang telah melayarinya

How to Avoid the

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

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

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

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

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

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

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!

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