Di GO, melelehkan peta dilakukan menggunakan kata kunci range
dalam gelung for
. Ini membolehkan anda mengakses kedua -dua kunci dan nilai setiap entri dalam peta. Sintaks asas untuk melelehkan peta kelihatan seperti ini:
<code class="go">myMap := map[string]int{"one": 1, "two": 2, "three": 3} for key, value := range myMap { fmt.Printf("Key: %s, Value: %d\n", key, value) }</code>
Kod ini akan mencetak setiap pasangan nilai utama dalam peta. Perintah lelaran di atas peta di GO tidak dijamin sama setiap kali anda melangkah, kerana peta adalah struktur data yang tidak teratur.
Sintaks untuk menggunakan range
dengan peta di dalam gelung for
adalah seperti berikut:
<code class="go">for key, value := range mapVariable { // Code to process each key-value pair }</code>
Di sini, mapVariable
adalah peta anda, key
akan memegang kunci entri semasa, dan value
akan memegang nilai yang berkaitan. Anda boleh memilih untuk mengabaikan sama ada kunci atau nilai jika anda hanya berminat dengan salah satu daripada mereka. Sebagai contoh, hanya untuk melangkah ke atas kunci:
<code class="go">for key := range mapVariable { // Code to process each key }</code>
Atau hanya melelehkan nilai -nilai:
<code class="go">for _, value := range mapVariable { // Code to process each value }</code>
Mengubah peta semasa melelehkannya boleh menjadi rumit kerana secara langsung mengubah suai entri peta boleh membawa kepada tingkah laku atau panik yang tidak dijangka, terutama jika anda cuba memadam entri. Walau bagaimanapun, anda boleh mengubah suai peta dengan selamat semasa melangkah ke atasnya dengan mengikuti amalan ini:
Memadam Penyertaan: Anda boleh memadamkan penyertaan dengan selamat dari peta semasa menggunakan kepingan berasingan untuk mengumpul kekunci yang harus dipadamkan, dan kemudian melelehkan kepingan untuk memadamkannya selepas gelung lelaran utama:
<code class="go">myMap := map[string]int{"one": 1, "two": 2, "three": 3} keysToDelete := []string{} for key, value := range myMap { if value == 2 { keysToDelete = append(keysToDelete, key) } } for _, key := range keysToDelete { delete(myMap, key) }</code>
Mengubah nilai: Anda boleh mengubahsuai nilai entri peta secara langsung semasa lelaran tanpa sebarang masalah:
<code class="go">for key, value := range myMap { myMap[key] = value * 2 // Doubling the value }</code>
Apabila berurusan dengan peta besar di Go, terdapat beberapa pertimbangan prestasi yang perlu diingat:
sync.Map
boleh digunakan untuk akses serentak, tetapi ia dilengkapi dengan set produk perdagangan sendiri.Untuk mengoptimumkan prestasi ketika bekerja dengan peta besar, pertimbangkan:
sync.Map
jika anda memerlukan akses selamat thread.Atas ialah kandungan terperinci Bagaimana anda melangkah ke peta di mana sahaja?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!