slice.go 500 B

123456789101112131415161718192021222324252627282930313233343536
  1. package util
  2. type Slice[T comparable] []T
  3. func (s Slice[T]) Len() int {
  4. return len(s)
  5. }
  6. func (s *Slice[T]) Add(v T) {
  7. *s = append(*s, v)
  8. }
  9. func (s *Slice[T]) Delete(v T) bool {
  10. for i, val := range *s {
  11. if val == v {
  12. *s = append((*s)[:i], (*s)[i+1:]...)
  13. return true
  14. }
  15. }
  16. return false
  17. }
  18. func (s *Slice[T]) Reset() {
  19. if len(*s) > 0 {
  20. *s = (*s)[:0]
  21. }
  22. }
  23. func (s *Slice[T]) ResetAppend(first T) {
  24. s.Reset()
  25. s.Add(first)
  26. }
  27. func LastElement[T any](s []T) T {
  28. return s[len(s)-1]
  29. }