Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengeluarkan Elemen dengan Cekap dari Slice dalam Gelung dalam Go?
Penyingkiran Elemen Di Tempat Dalam Gelung Slice
Masalah:
Mengakses elemen hirisan dari i dalam julat untuk gelung dan mengalih keluarnya menggunakan append() adalah bermasalah. Menaikkan pembolehubah gelung (i) boleh melangkau elemen berikutnya selepas dialih keluar, membawa kepada pemprosesan yang tidak lengkap.
Amalan Terbaik:
1. Penurunan Pembolehubah Gelung Manual
Gunakan gelung untuk biasa dengan pembolehubah gelung manual (i) berkurangan apabila elemen dialih keluar:
<code class="go">for i := 0; i < len(a); i++ { if conditionMeets(a[i]) { a = append(a[:i], a[i+1:]...) i-- } }
2. Gelung Ke Bawah
Sebagai alternatif, gunakan gelung ke bawah untuk mengelakkan penyusutan manual:
<code class="go">for i := len(a) - 1; i >= 0; i-- { if conditionMeets(a[i]) { a = append(a[:i], a[i+1:]...) } }</code>
3. Penyalinan Elemen Tidak Boleh Alih
Jika banyak elemen perlu dialih keluar, pertimbangkan untuk menyalin elemen tidak boleh tanggal ke kepingan baharu untuk meningkatkan kecekapan:
<code class="go">b := make([]string, len(a)) copied := 0 for _, s := range(a) { if !conditionMeets(s) { b[copied] = s copied++ } } b = b[:copied]</code>
4. Penyalinan dan Pensifaran Di Tempat
Untuk penyingkiran di tempat tujuan umum, kekalkan dua indeks dan tetapkan elemen tidak boleh alih sambil menyifarkan ruang elemen yang dialih keluar:
<code class="go">copied := 0 for i := 0; i < len(a); i++ { if !conditionMeets(a[i]) { a[copied] = a[i] copied++ } } for i := copied; i < len(a); i++ { a[i] = "" // Zero places of removed elements } a = a[:copied]</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Elemen dengan Cekap dari Slice dalam Gelung dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!