Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengeluarkan Peer Pendua dengan Cekap daripada Slice in Go?

Bagaimana untuk Mengeluarkan Peer Pendua dengan Cekap daripada Slice in Go?

Barbara Streisand
Barbara Streisandasal
2024-10-30 14:06:02725semak imbas

How to Efficiently Remove Duplicate Peers from a Slice in Go?

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!

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