feat: article: finish base functions

This commit is contained in:
fallen-angle
2022-02-15 16:49:32 +08:00
parent 72ef5c92c4
commit be5def58fd
13 changed files with 245 additions and 37 deletions

38
utils/set.go Normal file
View File

@@ -0,0 +1,38 @@
package utils
type void struct{}
type Set[T comparable] struct {
setMap map[T]void
}
func NewSet[T comparable](eles ...T) *Set[T] {
set := &Set[T]{setMap: make(map[T]void)}
set.AddAll(eles...)
return set
}
func (set *Set[T]) Add(ele T) *Set[T] {
set.setMap[ele] = void{}
return set
}
func (set *Set[T]) AddAll(eles ...T) *Set[T] {
for _, ele := range eles {
set.Add(ele)
}
return set
}
func (set *Set[T]) Delete(ele T) *Set[T] {
delete(set.setMap, ele)
return set
}
func (set *Set[T]) ToSlice() []T {
var s []T
for k, _ := range set.setMap {
s = append(s, k)
}
return s
}