在切片或數組中查找唯一項
在Go 中,維護切片或數組中的唯一項對於新手來說可能具有挑戰性。本指南解決了這個問題,提供了手動比較方法和基於集合的替代方法。
手動比較方法
手動比較方法涉及循環數組和對照每個其他元素檢查每個元素。如果發現重複項,則會跳過它。這是一個最佳化的範例:
<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } unique := map[visit]bool{} for _, v := range visited { unique[v] = true } var uniqueVisits []visit for v := range unique { uniqueVisits = append(uniqueVisits, v) } fmt.Println(uniqueVisits)</code>
基於集合的替代方案
Go 提供了可以用作集合的地圖資料結構。具有存取類型的鍵和布林類型的值的對應可以是維護唯一值的便捷方法。以下是範例:
<code class="go">visited := []visit{ visit{1, 100}, visit{2, 2}, visit{1, 100}, visit{1, 1}, } unique := map[visit]bool{} for _, v := range visited { if !unique[v] { unique[v] = true } } var uniqueVisits []visit for v := range unique { uniqueVisits = append(uniqueVisits, v) } fmt.Println(uniqueVisits)</code>
輸出
兩種方法將輸出相同的結果:
[visit{1 100} visit{2 2} visit{1 1}]
選擇最適合您的方法具體實施要求。手動比較方法提供了對元素比較的細微控制,而基於集合的方法提供了簡單和高效。
以上是如何在 Go 切片或陣列中找到唯一項目?的詳細內容。更多資訊請關注PHP中文網其他相關文章!