Mengalih keluar Item Pendua daripada Slice
Diberikan fail teks yang mengandungi senarai rakan sebaya yang diwakili sebagai objek dengan "Alamat" dan "PeerID" atribut, tugasnya adalah untuk mengalih keluar semua rakan setara pendua berdasarkan padanan "Alamat" dan "PeerID" daripada kepingan "Bootstrap" dalam konfigurasi kod.
Untuk mencapai ini, kami mengulangi setiap objek rakan sebaya dalam kepingan. beberapa kali. Semasa setiap lelaran, kami membandingkan "PeerID" dan "Alamat" dengan nilai yang dibekalkan pengguna. Jika padanan ditemui, kami mengalih keluar objek khusus itu daripada kepingan. Proses ini memastikan bahawa semua kejadian rakan sebaya dialih keluar.
Walau bagaimanapun, terdapat kes kelebihan untuk dipertimbangkan. Jika rakan sebaya terakhir dalam kepingan "Bootstrap" ialah pendua, kod itu akan panik dengan ralat "slice bounds out of range". Untuk menangani isu ini, kami boleh melaksanakan penyelesaian yang lebih mantap yang menyalin nilai tidak sepadan ke permulaan kepingan dan memangkas lebihan apabila lelaran selesai.
Berikut ialah kod yang dikemas kini:
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]
Kod ini berulang melalui kepingan "Bootstrap". Untuk setiap objek rakan sebaya, ia membandingkan "PeerID" dan "Alamat" dengan nilai yang dibekalkan pengguna. Jika rakan sebaya bukan pendua, ia disalin ke permulaan kepingan pada indeks "i." Indeks "i" kemudiannya dinaikkan untuk menghala ke kedudukan tersedia seterusnya.
Setelah lelaran selesai, hirisan "Bootstrap" dipangkas untuk mengalih keluar sebarang unsur berlebihan, dengan berkesan mengalih keluar semua peer pendua termasuk yang terakhir .
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Peer Pendua dengan Cekap daripada Slice in Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!