diff --git a/container/set/interface.go b/container/set/interface.go new file mode 100644 index 0000000..eb3646c --- /dev/null +++ b/container/set/interface.go @@ -0,0 +1,28 @@ +package set + +var x = struct{}{} + +type Set map[any]struct{} + +func (s *Set) Init() { + for k := range *s { + delete(*s, k) + } +} + +func (s *Set) Add(e any) { + (*s)[e] = x +} + +func (s *Set) Remove(e any) { + delete(*s, e) +} + +func (s *Set) Contains(e any) bool { + _, c := (*s)[e] + return c +} + +func New() *Set { + return new(Set) +}