Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengeluarkan Entri Pendua dengan Cekap daripada Slice dalam Go?

Bagaimana untuk Mengeluarkan Entri Pendua dengan Cekap daripada Slice dalam Go?

Patricia Arquette
Lepaskan: 2024-11-02 01:53:02
asal
852 orang telah melayarinya

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

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 &amp;&amp; v.Address == peer.Address {
      continue
   }
   cfg.Bootstrap[i] = v
   i++
}
cfg.Bootstrap = cfg.Bootstrap[:i]</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan