Documentation
¶
Overview ¶
Package slice provides generic utility functions for working with slices: membership tests (Contains, ContainsAll, ContainsAny), transformations (Map, Filter, Unique, Reverse, Shuffle, Difference, NonZero), and safe element access (At, AtOK, Find, First, Split, RemoveAt).
At and its siblings are the reason most of this exists: they read an out-of-range index as the zero value rather than panicking, which lets calling code skip the bounds check that would otherwise wrap every access.
These are functions over ordinary []T values. The sliceof package provides named slice types that carry methods and integrate with schema.
Index ¶
- func At[T any](slice []T, index int) T
- func AtOK[T any](slice []T, index int) (T, bool)
- func Contains[T comparable](slice []T, value T) bool
- func ContainsAll[T comparable](slice []T, values ...T) bool
- func ContainsAny[T comparable](slice []T, values ...T) bool
- func Difference[T comparable](a []T, b []T) []T
- func Equal[T comparable](value1 []T, value2 []T) bool
- func Filter[T any](original []T, keep func(T) bool) []T
- func Find[T any](slice []T, f func(T) bool) (T, bool)
- func First[T any](original []T, keep func(T) bool) T
- func Map[T1 any, T2 any](source []T1, delta func(T1) T2) []T2
- func NonZero[T comparable](original []T) []T
- func NotContains[T comparable](slice []T, value T) bool
- func NotEqual[T comparable](value1 []T, value2 []T) bool
- func Range[V any](value []V) iter.Seq2[int, V]
- func RemoveAt[T comparable](slice []T, index int) []T
- func Reverse[T any](x []T) []T
- func Shuffle[T any](x []T) []T
- func Split[T any](slice []T) (T, []T)
- func Unique[T comparable](original []T) []T
- type Grouper
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func At ¶ added in v0.21.5
At returns a bounds-safe value from a slice. If the index is out of bounds for the slice, then `At` returns the zero value for that type.
func AtOK ¶ added in v0.22.0
AtOK returns a bounds-safe value from a slice. If the index is out of bounds for the slice, then `At` returns the zero value for that type.
func Contains ¶ added in v0.2.0
func Contains[T comparable](slice []T, value T) bool
Contains scans a slice for a matching value, and returns TRUE if the value is found.
func ContainsAll ¶ added in v0.2.0
func ContainsAll[T comparable](slice []T, values ...T) bool
ContainsAll returns TRUE if the slice contains ALL of the provided values
func ContainsAny ¶ added in v0.14.0
func ContainsAny[T comparable](slice []T, values ...T) bool
ContainsAny returns TRUE if the slice contains ANY of the provided values
func Difference ¶ added in v0.25.3
func Difference[T comparable](a []T, b []T) []T
Difference returns a new slice of the elements in a that are not present in b.
func Equal ¶ added in v0.5.1
func Equal[T comparable](value1 []T, value2 []T) bool
Equal returns true if the two slices are identical, having the same items in the same order, with no alterations.
func Find ¶ added in v0.23.0
Find returns the first element in the slice that satisfies the provided function.
func First ¶ added in v0.11.0
First returns the first element for which keep returns TRUE, or the zero value if none match.
func Map ¶
Map returns a new slice containing the result of applying delta to each element of source.
func NonZero ¶ added in v0.19.0
func NonZero[T comparable](original []T) []T
NonZero filters out all zero values from a slice
func NotContains ¶ added in v0.25.9
func NotContains[T comparable](slice []T, value T) bool
NotContains returns TRUE if the value DOES NOT exist in the slice
func NotEqual ¶ added in v0.24.8
func NotEqual[T comparable](value1 []T, value2 []T) bool
NotEqual returns TRUE if the two slices are NOT identical
func RemoveAt ¶ added in v0.25.5
func RemoveAt[T comparable](slice []T, index int) []T
RemoveAt returns the slice with the element at index removed; an out-of-range index is a no-op.
func Reverse ¶ added in v0.19.0
func Reverse[T any](x []T) []T
Reverse reverses the order of the elements in the slice in place, and returns it.
func Shuffle ¶ added in v0.25.8
func Shuffle[T any](x []T) []T
Shuffle randomizes the order of the elements in the slice in place, and returns it.
func Split ¶ added in v0.23.1
func Split[T any](slice []T) (T, []T)
Split returns the first element of the slice and a slice of the remaining elements. An empty slice yields the zero value and the original (empty) slice.
func Unique ¶ added in v0.19.0
func Unique[T comparable](original []T) []T
Unique returns a new slice with all duplicate values removed.
Types ¶
type Grouper ¶ added in v0.25.20
type Grouper[T stringOKGetter] struct {
// contains filtered or unexported fields
}
Grouper reports group boundaries within a slice that is already sorted by a named string field.
func NewGrouper ¶ added in v0.25.20
NewGrouper returns a Grouper that detects boundaries in the slice using the named field.