2 つのslice の長さが同じで、含まれる要素とその順番が等しいかどうかを返す func Equal[T comparable](s1, s2 []T) bool func EqualFunc[T1, T2 any](s1 []T1, s2 []T2, eq func(T1, T2) bool) bool // 2 つのslice を比較する // 結果は `0 if s1==s2, -1 if s1 < s2, and +1 if s1 > s2` の数値で得られる func Compare[T constraints.Ordered](s1, s2 []T) int func CompareFunc[T any](s1, s2 []T, cmp func(T, T) int) int /* 検索系 */ // v のs 内でのindex を返す func Index[T comparable](s []T, v T) int func IndexFunc[T any](s []T, f func(T) bool) int // v がs に含まれているかどうかを返す func Contains[T comparable](s []T, v T) bool /* 要素操作系 */ // v をs のi 番目に挿入し、変更されたslice を返す func Insert[S constraints.Slice[T], T any](s S, i int, v ...T) S // s[i:j] をs から除去して、変更されたslice を返す func Delete[S constraints.Slice[T], T any](s S, i, j int) S /* 複製系 */ // s を複製したslice を返す func Clone[S constraints.Slice[T], T any](s S) S // 等しい要素を取り除いたslice を返す。(Unix のuniq command のようなイメージ) func Compact[S constraints.Slice[T], T comparable](s S) S func CompactFunc[S constraints.Slice[T], T any](s S, cmp func(T, T) bool) S /* 容量操作系 */ // 容量をn 増やしたslice を返す func Grow[S constraints.Slice[T], T any](s S, n int) S // slice の使われていない容量を取り除いたslice を返す func Clip[S constraints.Slice[T], T any](s S) S