首頁 > 後端開發 > Golang > 如何有效地從 Go 中的切片中刪除重複條目?

如何有效地從 Go 中的切片中刪除重複條目?

Patricia Arquette
發布: 2024-11-02 01:53:02
原創
844 人瀏覽過

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

從切片中刪除重複項

您的目標是從文字檔案中刪除重複的對等點,其中每個對等點都由位址和對等點ID 來表徵。提供的程式碼有效地解決了此任務,但在刪除最後一個重複項時遇到錯誤。為了解決這個問題,提出了一個修改後的方法。

首先,宣告一個變數 i 並將其初始化為 0。該變數將追蹤 cfg.Bootstrap 切片中最後一個非重複對等點的索引。然後,使用基於範圍的 for 迴圈遍歷切片。

在迴圈內,檢查目前對等點的位址和對等點 ID 是否與要刪除的對等點相符。如果是,則跳過目前對等點。否則,將目前對等點分配給 cfg.Bootstrap[i] 並遞增 i。

循環完成後,cfg.Bootstrap[i:] 將只包含需要刪除的重複對等點。若要修剪這些多餘的值,請將 cfg.Bootstrap[:i] 指派回 cfg.Bootstrap。

這是修改後的程式碼片段:

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

此修改後的方法可以有效刪除所有重複的對等點,包括最後一個位置的。

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

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