Files
engine/util/slice.go
2022-02-08 19:31:50 +08:00

33 lines
442 B
Go

package util
type Slice[T comparable] []T
func (s Slice[T]) Len() int {
return len(s)
}
func (s *Slice[T]) Add(v T) {
*s = append(*s, v)
}
func (s *Slice[T]) Delete(v T) bool {
for i, val := range *s {
if val == v {
*s = append((*s)[:i], (*s)[i+1:]...)
return true
}
}
return false
}
func (s *Slice[T]) Reset() {
if len(*s) > 0 {
*s = (*s)[:0]
}
}
func (s *Slice[T]) ResetAppend(first T) {
s.Reset()
s.Add(first)
}