首頁 > 後端開發 > Golang > 主體

如何在 Go 中有效地從切片中刪除重複的對等點?

Barbara Streisand
發布: 2024-10-30 14:06:02
原創
852 人瀏覽過

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

從切片中刪除重複項

給定一個文字文件,其中包含表示為具有「Address」和「PeerID」的物件的對等點清單屬性,任務是根據程式碼配置中「Bootstrap」切片中匹配的「Address」和「PeerID」刪除所有重複的對等點。

為了實現此目的,我們迭代切片中的每個對等物件多次。在每次迭代期間,我們將其「PeerID」和「Address」與使用者提供的值進行比較。如果找到匹配項,我們就會從切片中刪除該特定物件。此程序可確保刪除對等點的所有實例。

但是,需要考慮一種邊緣情況。如果「Bootstrap」切片中的最後一個對等點是重複的,則程式碼將出現「切片超出範圍」錯誤。為了解決這個問題,我們可以實現一個更強大的解決方案,將不匹配的值複製到切片的開頭,並在迭代完成時修剪多餘的值。

這是更新的程式碼:

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]
登入後複製

此程式碼迭代「Bootstrap」切片。對於每個對等對象,它將其“PeerID”和“Address”與使用者提供的值進行比較。如果對等點不是重複項,則將其複製到索引「i」處的切片開頭。然後“i”索引遞增以指向下一個可用位置。

迭代完成後,「Bootstrap」切片將被修剪以刪除任何多餘的元素,從而有效地刪除所有重複的對等點,包括最後一個.

以上是如何在 Go 中有效地從切片中刪除重複的對等點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板