Memadam Pendua daripada Slice
Anda menyasarkan untuk mengalih keluar rakan pendua daripada fail teks di mana setiap rakan setara dicirikan oleh Alamat dan ID Peer. Kod yang disediakan berkesan menangani tugas ini tetapi menghadapi ralat semasa memadamkan pendua terakhir. Untuk menyelesaikan masalah ini, pendekatan yang disemak dipersembahkan.
Untuk bermula, isytiharkan pembolehubah i dan mulakan ia kepada 0. Pembolehubah ini akan menjejaki indeks rakan bukan pendua terakhir dalam kepingan cfg.Bootstrap. Kemudian, gelung melalui hirisan menggunakan gelung berasaskan julat.
Dalam gelung, semak sama ada Alamat rakan semasa dan ID Peer sepadan dengan alamat rakan yang akan dialih keluar. Jika mereka melakukannya, langkau rakan sebaya semasa. Jika tidak, tetapkan peer semasa kepada cfg.Bootstrap[i] dan kenaikan i.
Selepas gelung selesai, cfg.Bootstrap[i:] akan mengandungi hanya peer pendua yang perlu dialih keluar. Untuk memangkas nilai lebihan ini, tetapkan cfg.Bootstrap[:i] kembali ke cfg.Bootstrap.
Berikut ialah coretan kod yang disemak:
<code class="go">i := 0 for _, v := range cfg.Bootstrap { if v.PeerId == peer.PeerId && v.Address == peer.Address { continue } cfg.Bootstrap[i] = v i++ } cfg.Bootstrap = cfg.Bootstrap[:i]</code>
Pendekatan yang disemak ini memadamkan semua rakan setara pendua dengan cekap, termasuk yang berada di kedudukan terakhir.
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Entri Pendua dengan Cekap daripada Slice dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!