github.com/AndrienkoAleksandr/go@v0.0.19/src/go/parser/testdata/set.go2 (about)

     1  // Package set implements sets of any type.
     2  package set
     3  
     4  type Set[Elem comparable] map[Elem]struct{}
     5  
     6  func Make[Elem comparable]() Set[Elem] {
     7  	return make(Set(Elem))
     8  }
     9  
    10  func (s Set[Elem]) Add(v Elem) {
    11  	s[v] = struct{}{}
    12  }
    13  
    14  func (s Set[Elem]) Delete(v Elem) {
    15  	delete(s, v)
    16  }
    17  
    18  func (s Set[Elem]) Contains(v Elem) bool {
    19  	_, ok := s[v]
    20  	return ok
    21  }
    22  
    23  func (s Set[Elem]) Len() int {
    24  	return len(s)
    25  }
    26  
    27  func (s Set[Elem]) Iterate(f func(Elem)) {
    28  	for v := range s {
    29  		f(v)
    30  	}
    31  }