從切片中刪除重複項
給定一個文字文件,其中包含表示為具有“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」切片將被修剪以刪除任何多餘的元素,從而有效地刪除所有重複的對等點,包括最後一個.
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3