35 lines
531 B
Go
35 lines
531 B
Go
package utils
|
|
|
|
import "sort"
|
|
|
|
type Set map[string]bool
|
|
|
|
func (s Set) Add(element string) {
|
|
s[element] = true
|
|
}
|
|
|
|
func (s Set) Remove(element string) {
|
|
delete(s, element)
|
|
}
|
|
|
|
func (s Set) Contains(element string) bool {
|
|
return s[element]
|
|
}
|
|
|
|
func (s Set) Size() int {
|
|
return len(s)
|
|
}
|
|
|
|
func (s Set) Elements() []string {
|
|
elements := make([]string, 0, len(s))
|
|
for element := range s {
|
|
elements = append(elements, element)
|
|
}
|
|
|
|
sort.Slice(elements, func(i, j int) bool {
|
|
return elements[i] < elements[j]
|
|
})
|
|
|
|
return elements
|
|
}
|