Path: blob/master/bitget-golang-sdk-api/internal/model/set.go
735 views
package model12import (3"sync"4)56type inter interface{}78type Set struct {9m map[inter]bool10sync.RWMutex11}1213func NewSet() *Set {14return &Set{15m: map[inter]bool{},16}17}18func (s *Set) Add(item inter) {19s.Lock()20defer s.Unlock()21s.m[item] = true22}23func (s *Set) Remove(item inter) {24s.Lock()25s.Unlock()26delete(s.m, item)27}28func (s *Set) Has(item inter) bool {29s.RLock()30defer s.RUnlock()31_, ok := s.m[item]32return ok33}34func (s *Set) Len() int {35return len(s.List())36}37func (s *Set) Clear() {38s.Lock()39defer s.Unlock()40s.m = map[inter]bool{}41}42func (s *Set) IsEmpty() bool {43if s.Len() == 0 {44return true45}46return false47}48func (s *Set) List() []inter {49s.RLock()50defer s.RUnlock()51list := []inter{}52for item := range s.m {53list = append(list, item)54}55return list56}575859