func (s *StrSync) GetList() []string {
	s.RLock()
	defer s.RUnlock()
	strList := []string{}
	for i := range s.nodeMap {
		strList = append(strList, i)
	}
	return strList
}
GetList - Get set items
package set
import "sync"
type StrSync struct {
	nodeMap map[string]struct{}
	sync.RWMutex
}
func NewStrSync(strList []string) *StrSync {
	s := &StrSync{}
	for _, str := range strList {
		s.Add(str)
	}
	return s
}
func (s *StrSync) Add(str string) *StrSync {
	s.Lock()
	defer s.Unlock()
	if s.nodeMap == nil {
		s.nodeMap = make(map[string]struct{})
	}
	_, ok := s.nodeMap[str]
	if !ok {
		s.nodeMap[str] = struct{}{}
	}
	return s
}
func (s *StrSync) Clear() {
	s.Lock()
	defer s.Unlock()
	s.nodeMap = make(map[string]struct{})
}
func (s *StrSync) Remove(str string) bool {
	s.Lock()
	defer s.Unlock()
	_, ok := s.nodeMap[str]
	if ok {
		delete(s.nodeMap, str)
	}
	return ok
}
func (s *StrSync) Contains(str string) bool {
	s.RLock()
	defer s.RUnlock()
	_, ok := s.nodeMap[str]
	return ok
}