從切片中刪除重複項
您的目標是從文字檔案中刪除重複的對等點,其中每個對等點都由位址和對等點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 && v.Address == peer.Address { continue } cfg.Bootstrap[i] = v i++ } cfg.Bootstrap = cfg.Bootstrap[:i]</code>
此修改後的方法可以有效刪除所有重複的對等點,包括最後一個位置的。
以上是如何有效地從 Go 中的切片中刪除重複條目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!