首頁  >  文章  >  後端開發  >  如何在 Go 切片或陣列中找到唯一項目?

如何在 Go 切片或陣列中找到唯一項目?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-01 04:16:27919瀏覽

How to Find Unique Items in a Go Slice or Array?

在切片或數組中查找唯一項

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn