首頁 >後端開發 >Golang >為什麼 Golang 沒有原生的 Set 資料結構?

為什麼 Golang 沒有原生的 Set 資料結構?

Patricia Arquette
Patricia Arquette原創
2024-11-28 16:43:14943瀏覽

Why Doesn't Golang Have a Native Set Data Structure?

Golang 奇怪地缺乏集合資料結構

在Golang 中,對集合資料結構的基本需求導致了一個令人困惑的問題:為什麼不是原生提供的嗎?從 Google 頗具影響力的 Guava 庫中汲取靈感,為什麼 Golang 的設計者省略了對這樣一個基本結構的支持,迫使開發人員自己設計實現?

答案在於使用映射來建立集合的簡單性。如提供的程式碼片段中所示,可以利用地圖來建立集。可以輕鬆實現檢查是否存在、新增、刪除和執行集合操作(​​並集、交集)等關鍵操作。

s := map[int]bool{5: true, 2: true}
_, ok := s[6] // check for existence
s[8] = true // add element 
delete(s, 2) // remove element

// Union
s_union := map[int]bool{}
for k, _ := range s1{
    s_union[k] = true
}
for k, _ := range s2{
    s_union[k] = true
}

// Intersection
s_intersection := map[int]bool{}
if len(s1) > len(s2) {
  s1, s2 = s2, s1 // better to iterate over a shorter set
}
for k,_ := range s1 { 
  if s2[k] {
    s_intersection[k] = true
  }
}

雖然這些基於地圖的實作足以滿足大多數實際場景,但有些可能會失敗。認為本機集實作將簡化並增強程式碼可讀性。儘管如此,對於 Golang 開發人員來說,理解映射作為集合的使用對於解決問題和高效資源利用至關重要。

以上是為什麼 Golang 沒有原生的 Set 資料結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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