package set type Set[T comparable] map[T]struct{} func (s Set[T]) Add(items ...T) { for _, v := range items { s[v] = struct{}{} } } func (s Set[T]) AddWithOutEmpty(items ...T) { var empty T for _, v := range items { if v == empty { continue } s[v] = struct{}{} } } func (s Set[T]) Has(data T) bool { _, ok := s[data] return ok } func (s Set[T]) Delete(data T) { delete(s, data) } func (s Set[T]) Count() int32 { return int32(len(s)) } func (s Set[T]) ToSlice() []T { res := make([]T, 0, len(s)) for k := range s { res = append(res, k) } return res }