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