1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| package util
import ( "fmt" "slices" "sort" )
type StringSlice struct { Slice []string }
func NewStringSlice(a []string) *StringSlice { return &StringSlice{Slice: a} }
func (s *StringSlice) Empty() bool { return len(s.Slice) == 0 }
func (s *StringSlice) TotalLength() int { var total int for _, str := range s.Slice { total += len(str) } return total }
func (s *StringSlice) Push(strs ...string) { s.Slice = append(s.Slice, strs...) }
func (s *StringSlice) PushUnique(strs ...string) { for _, x := range strs { if !slices.Contains(s.Slice, x) { s.Push(x) } } }
func (s *StringSlice) Pushf(msg string, args ...any) { s.Push(fmt.Sprintf(msg, args...)) }
func (s *StringSlice) Join(x string) string { return StringJoin(s.Slice, x) }
func (s *StringSlice) String() string { return s.Join("\n") }
func (s *StringSlice) Sort() { sort.Strings(s.Slice) }
|