Implementation of slice functions for Go 1.18+ inspired by the Kotlin Collection extensions.
go get github.com/micotom/gfuncs
Fold : []T, V, (V, T -> V) -> V
func Fold[T any, V any](slice []T, initial V, fn func(acc V, t T) V) VFoldIndexed : []T, V, (int, T, V -> V) -> V
func FoldIndexed[T any, V any](slice []T, initial V, fn func(index int, acc V, t T) V) VSortBy : []T, (T -> V) -> []T
func SortBy[T any, V constraints.Ordered](slice []T, fn func(t T) V) []TFilter : []T, (T -> bool) -> []T
func Filter[T any](slice []T, fn func(t T) bool) []TFilterIndexed : []T, (int, T -> bool) -> []T
func FilterIndexed[T any](slice []T, fn func(i int, t T) bool) []TGroupBy : []T, (T -> V) -> map[V][]T
func GroupBy[T any, V comparable](slice []T, fn func(t T) V) map[V][]TSumBy : []T, (T -> V) -> *V, error
func SumBy[T any, V Number](slice []T, fn func(t T) V) (*V, error)Map : []T, (T -> V) -> []V
func Map[T any, V any](slice []T, fn func(t T) V) []VMapIndexed : []T, (int, T -> V) -> []V
func MapIndexed[T any, V any](slice []T, fn func(i int, t T) V) []V Flatten : [][]T -> []T
func Flatten[T any](slice [][]T) []TZip : []T, []V -> []Tuple[T, V]
func Zip[T any, V any](sliceT []T, sliceV []V) []Tuple[T, V]Find : []T, (T -> bool) -> *T
func Find[T any](slice []T, fn func(t T) bool) *TAny : []T, (T -> bool) -> bool
func Any[T any](slice []T, fn func(t T) bool) boolAll : []T, (T -> bool) -> bool
func All[T any](slice []T, fn func(t T) bool) bool