Rumah  >  Artikel  >  pembangunan bahagian belakang  >  peta golang buang

peta golang buang

WBOY
WBOYasal
2023-05-19 11:57:37534semak imbas

Peta dalam golang ialah struktur data yang sangat penting dan biasa digunakan, yang serupa dengan kamus atau tatasusunan bersekutu dalam bahasa pengaturcaraan lain. Menggunakan peta boleh menggantikan struktur data lain seperti tatasusunan dan kepingan dalam banyak kes, dan mempunyai prestasi dan kebolehbacaan yang sangat tinggi. Walau bagaimanapun, apabila menggunakan peta, kadangkala anda mungkin perlu mengalih keluar beberapa elemen. Artikel ini akan membincangkan operasi pengalihan keluar peta di golang.

Dalam golang, anda boleh menggunakan fungsi pemadaman terbina dalam untuk mengalih keluar pasangan nilai kunci dalam peta. Penggunaan khusus adalah seperti berikut:

delete(map, key)

Antaranya, peta mewakili pembolehubah peta yang akan dikendalikan, dan kunci mewakili nama kunci yang akan dialih keluar. Sebagai contoh, kod berikut mengalih keluar pasangan nilai kunci "nama": "Tom" daripada peta bernama m:

m := map[string]string{"name": "Tom", "age": "18"}
delete(m, "name")
fmt.Println(m) // 输出: map[age:18]

Perlu diingat bahawa jika anda cuba memadamkan pasangan nilai kunci yang tidak wujud , fungsi padam Ia tidak akan memberi kesan dan tiada ralat akan dilaporkan. Contohnya, kod berikut:

m := map[string]string{"name": "Tom", "age": "18"}
delete(m, "address")
fmt.Println(m) // 输出: map[name:Tom age:18]

Dalam kod di atas, kunci "alamat" yang cuba dipadamkan tidak wujud dalam peta, jadi tiada perubahan.

Anda mungkin menghadapi beberapa masalah semasa mengalih keluar pasangan nilai kunci daripada peta. Contohnya, kod berikut:

m := map[string]string{"name": "Tom", "age": "18"}
for key, value := range m {
    if key == "name" {
        delete(m, key)
    }
}
fmt.Println(m) // 输出: map[age:18]

Kod di atas akan cuba menggunakan gelung for untuk merentasi elemen dalam peta dan menentukan sama ada nama kunci ialah "nama". Jika ya, gunakan fungsi padam untuk mengalih keluar pasangan nilai kunci. Walau bagaimanapun, apabila kod dijalankan, ralat akan dilaporkan:

fatal error: concurrent map iteration and map write

Ini kerana peta tidak boleh diubah suai apabila gelung for melintasi peta. Oleh itu, cuba mengubah suai peta menggunakan fungsi seperti padam di dalam gelung akan menjadi salah. Penyelesaian kepada masalah ini ialah menggunakan kepingan sementara untuk menyimpan kekunci yang akan dipadamkan, dan kemudian mengeluarkannya selepas gelung berakhir. Contohnya, kod berikut:

m := map[string]string{"name": "Tom", "age": "18"}
var keysToDelete []string
for key, value := range m {
    if key == "name" {
        keysToDelete = append(keysToDelete, key)
    }
}
for _, key := range keysToDelete {
    delete(m, key)
}
fmt.Println(m) // 输出: map[age:18]

Melalui kaedah di atas, kita boleh berjaya mengalih keluar elemen dalam peta dalam golang, sambil mengelak ralat yang disebabkan oleh pengubahsuaian dalam gelung. Walau bagaimanapun, perlu diingat bahawa dalam beberapa kes, kami mungkin lebih sesuai untuk menggunakan struktur data lain dan bukannya peta. Mengalih keluar elemen daripada jenis struktur data lain mungkin lebih cekap, lebih mudah dan boleh disesuaikan dengan senario tertentu.

Atas ialah kandungan terperinci peta golang buang. 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
Artikel sebelumnya:pertanyaan golang bootprotoArtikel seterusnya:pertanyaan golang bootproto