1
0
mirror of https://github.com/khorevaa/logos.git synced 2025-03-17 21:17:58 +02:00
logos/internal/common/stringset.go
2021-02-01 17:50:15 +03:00

46 lines
670 B
Go

package common
type StringSet map[string]struct{}
func MakeStringSet(strings ...string) StringSet {
if len(strings) == 0 {
return nil
}
set := StringSet{}
for _, str := range strings {
set[str] = struct{}{}
}
return set
}
func (set StringSet) Add(s string) {
set[s] = struct{}{}
}
func (set StringSet) Del(s string) {
delete(set, s)
}
func (set StringSet) Count() int {
return len(set)
}
func (set StringSet) Has(s string) (exists bool) {
if set != nil {
_, exists = set[s]
}
return
}
func (set StringSet) ToSlice() []string {
if set == nil {
return nil
}
ss := make([]string, 0)
for s := range set {
ss = append(ss, s)
}
return ss
}