從切片中刪除重複項
給定一個文字文件,其中包含表示為具有「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中文網其他相關文章!