Go資料結構:集合

分析和實現Go語言中的集合資料結構 集合是一組值的集合。您可以對這些值進行迭代,添加新值,刪除值並清除集合,獲取集合大小,以及檢查集合是否包含某個項目。集合中的值可能只會被存儲一次,不允許重複。 第一個實現 這是一個簡單的集合實現,尚未具備並發安全性,為了簡潔和易於理解,並沒有鎖定資源。稍後在本文中將添加鎖定。 請注意第二行,它允許我們通過生成此通用資料結構的特定實現來使用任何類型的集合。 set.go // 包set為Item類型創建ItemSet資料結構 package set import "github.com/cheekybits/genny/generic" // Item 集合的類型 type Item generic.Type // ItemSet 集合項目的集合 type ItemSet struct { items map[Item]bool } // Add 向集合中添加新元素。返回集合的指針。 func (s *ItemSet) Add(t Item) *ItemSet { if s.items == nil { s.items = make(map[Item]bool) } _, ok := s.items[t] if !ok { s.items[t] = true } return s } // Clear 從集合中刪除所有元素 func (s *ItemSet) Clear() { s.items = make(map[Item]bool) } // Delete 從集合中刪除項目並返回有無(項目) func (s *ItemSet) Delete(item Item) bool { _, ok := s....