Documentation
¶
Index ¶
- func AllMatch[T any](values []T, predicate func(v T) bool) bool
- func AnyMatch[T any](values []T, predicate func(v T) bool) bool
- func AsString[T uconst.Stringable](delimiter string, values ...T) string
- func BestMatchBy[T any](values []T, predicate func(currentBest, candidate T) bool) *T
- func CollectAsMap[K comparable, V, R any](values []V, key func(v V) K, val func(v V) R) map[K]R
- func Contains[V comparable](values []V, val V) int
- func ContainsAny[V comparable](from []V, values ...V) int
- func ContainsPredicate[T any](values []T, predicate func(v T) bool) (int, *T)
- func ContainsStruct[K comparable, V Indexed[K]](values []V, val V) (int, *V)
- func CopyWithoutIndex[T any](src []T, index int) []T
- func CopyWithoutIndexes[T any](src []T, indexes []int) []T
- func EqualValues[T constraints.Ordered](left []T, right []T) bool
- func EqualValuesCompare[T any](left []T, right []T, compare func(t1, t2 T) bool, less func(t1, t2 T) bool) bool
- func EqualsCompareWithOrder[T any](left []T, right []T, compare func(t1 T, t2 T) bool) bool
- func EqualsWithOrder[T comparable](left []T, right []T) bool
- func Filter[V any](values []V, filter func(v V) bool) []V
- func FilterAll[V any](values []V, filter func(v V) bool) ([]V, []V)
- func FilterBySet[V comparable](values []V, filter ...V) []V
- func FilterOut[V any](values []V, filter func(v V) bool) []V
- func FilterOutBySet[V comparable](values []V, filter ...V) []V
- func Find[V any](values []V, filter func(v V) bool) *V
- func FindBinary[V any](values []V, filter func(v V) bool) *V
- func Flat[V any](values [][]V) []V
- func FlatMap[V, R any](values [][]V, m func(v V) R) []R
- func GroupBy[V any, G comparable](values []V, group func(v V) G, aggregator func(v1, v2 V) V) []V
- func GroupToMapBy[V any, G comparable](values []V, group func(v V) G) map[G][]V
- func Has[T comparable](values []T, val T) bool
- func IndexOfUint32(slice []uint32, value uint32) int
- func Map[V, R any](values []V, m func(v V) R) []R
- func MapAggr[V, R any](values []V, aggr func(v V) []R) []R
- func MapAndGroupToMapBy[V any, G comparable, R any](values []V, group func(v V) (G, R)) map[G][]R
- func Merge[K comparable, T any](t1 []T, t2 []T, key func(t T) K) []T
- func Range[T uconst.Integer](from, to T) []T
- func RangeWithStep(from, to, step int) []int
- func SortFind[V any](values []V, less func(a, b V) bool, filter func(V) bool) *V
- func Split[T any](slice []T, chunkSize int) [][]T
- func ToMap[V any, K comparable, R any](values []V, m func(v V) (K, R)) map[K]R
- func ToMultiMap[V any, K comparable, R any](values []V, m func(v V) (K, R)) map[K][]R
- func Uniq[V any, F comparable](values []V, getter func(v V) F) []V
- func Unique[V comparable](values []V, transform ...func(v V) V) []V
- type Indexed
- type Pair
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AllMatch ¶
AllMatch checks if all slice elements match the predicate. Returns true if all elements match the predicate, false otherwise.
func AnyMatch ¶
AnyMatch checks if slice has an element that matches predicate. Returns true if there's a match, false otherwise.
func AsString ¶
func AsString[T uconst.Stringable](delimiter string, values ...T) string
AsString converts any supported numeric value to a string and joins them with the specified delimiter.
func BestMatchBy ¶
BestMatchBy iterates over the slice and selects the element that satisfies the predicate function as the best match. The predicate function compares the current best match with the candidate and determines if the candidate is better. Returns a pointer to the selected element or nil if the slice is empty.
func CollectAsMap ¶
func CollectAsMap[K comparable, V, R any](values []V, key func(v V) K, val func(v V) R) map[K]R
CollectAsMap collects corresponding values to a map.
func Contains ¶
func Contains[V comparable](values []V, val V) int
Contains checks if slice contains specified element. Returns its index if found, -1 otherwise.
func ContainsAny ¶
func ContainsAny[V comparable](from []V, values ...V) int
ContainsAny checks if slice contains any element from another slice. Returns its index if found, -1 otherwise.
func ContainsPredicate ¶
ContainsPredicate checks if slice contains specified struct element by using a predicate. Returns its index and value if found, -1 and nil otherwise.
func ContainsStruct ¶
func ContainsStruct[K comparable, V Indexed[K]](values []V, val V) (int, *V)
ContainsStruct checks if slice contains specified struct element. Returns its index and value if found, -1 and nil otherwise.
func CopyWithoutIndex ¶
CopyWithoutIndex copies a slice while ignoring an element at specific index.
func CopyWithoutIndexes ¶
CopyWithoutIndexes copies a slice while ignoring elements at specific indexes. Duplicate values for indexes are ignored.
func EqualValues ¶
func EqualValues[T constraints.Ordered](left []T, right []T) bool
EqualValues compares values of two slices regardless of elements order.
func EqualValuesCompare ¶
func EqualValuesCompare[T any](left []T, right []T, compare func(t1, t2 T) bool, less func(t1, t2 T) bool) bool
EqualValuesCompare compares values of two slices regardless of elements order.
func EqualsCompareWithOrder ¶
EqualsCompareWithOrder compares two slices taking into consideration elements order.
func EqualsWithOrder ¶
func EqualsWithOrder[T comparable](left []T, right []T) bool
EqualsWithOrder compares two slices taking into consideration elements order.
func Filter ¶
Filter filters values slice and returns a copy with filtered elements matching a predicate.
func FilterAll ¶
FilterAll filters values slice and returns a copy with filtered elements matching a predicate and elements that do not match any filter.
func FilterBySet ¶
func FilterBySet[V comparable](values []V, filter ...V) []V
FilterBySet filters values slice and returns a copy with filtered elements matching values from filter.
func FilterOut ¶
FilterOut is a macros to Filter, so it acts like Filter, but filters out values. That means that only values not matching the filter will be returned.
func FilterOutBySet ¶
func FilterOutBySet[V comparable](values []V, filter ...V) []V
FilterOutBySet filters out values slice and returns a copy without filtered elements matching values from filter.
func FindBinary ¶
FindBinary finds the first match in a sorted slice using binary search. The filter function should implement a comparison suitable for binary search.
func FlatMap ¶
func FlatMap[V, R any](values [][]V, m func(v V) R) []R
FlatMap applies the Map method and the Flat method consequently.
func GroupBy ¶
func GroupBy[V any, G comparable](values []V, group func(v V) G, aggregator func(v1, v2 V) V) []V
GroupBy groups and aggregates elements with aggregator method func.
func GroupToMapBy ¶
func GroupToMapBy[V any, G comparable](values []V, group func(v V) G) map[G][]V
GroupToMapBy groups elements with group method func.
func Has ¶
func Has[T comparable](values []T, val T) bool
Has checks if slice has an element. Returns true if there's a match, false otherwise.
func IndexOfUint32 ¶
func MapAggr ¶
func MapAggr[V, R any](values []V, aggr func(v V) []R) []R
MapAggr maps a func to each set of elements and returns an aggregated result.
func MapAndGroupToMapBy ¶
func MapAndGroupToMapBy[V any, G comparable, R any](values []V, group func(v V) (G, R)) map[G][]R
MapAndGroupToMapBy same as GroupToMapBy, but allows elements to be mapped to a different type.
func Merge ¶
func Merge[K comparable, T any](t1 []T, t2 []T, key func(t T) K) []T
Merge merges two slices with t1 elements prioritized against elements of t2.
func Range ¶
Range generates a slice of integers from 'from' to 'to' (exclusive). The type T must be an integer type (e.g., int, int64, uint, etc.). The returned slice includes 'from', but is exclusive to 'to'. Example usage: FromRange(1, 5) returns []int{1, 2, 3, 4}.
func RangeWithStep ¶
RangeWithStep generates a slice of integers starting from 'from' up to and including 'to' with a specified step.
func SortFind ¶
SortFind sorts the given slice using the provided less function and then finds the first match using a binary search with the filter function. This approach is efficient for large slices and repeated searches, as it leverages the speed of binary search. NOTE: please note that the original slice will be modified.
Parameters:
- values: the slice of elements to search through.
- less: a function that defines the order of elements for sorting.
- filter: a function that tests each element to find a match.
Returns:
- A pointer to the found element, or nil if no match is found.
func Split ¶
Split divides a slice into multiple smaller slices (chunks) of a specified size and returns a slice of these chunks.
If chunkSize is less than or equal to zero, the function returns a slice containing the original slice as its only element. If the length of the input slice isn't perfectly divisible by chunkSize, the last chunk will contain the remaining elements.
Example:
input: []int{1, 2, 3, 4, 5}, chunkSize: 2
output: [][]int{{1, 2}, {3, 4}, {5}}
Type Parameters:
T - The type of elements in the slice.
Parameters:
slice - The input slice to be split. chunkSize - The desired size of each chunk.
Returns:
A two-dimensional slice where each inner slice is a chunk of the original slice.
func ToMap ¶
func ToMap[V any, K comparable, R any](values []V, m func(v V) (K, R)) map[K]R
ToMap collects elements of a slice into a map using a collector function.
If the mapping function produces the same key for multiple elements, the resulting map will contain only the last value associated with that key, as the map does not behave like a multimap. Each key in the returned map corresponds to a single value, and any previous value for the same key will be overwritten.
func ToMultiMap ¶
func ToMultiMap[V any, K comparable, R any](values []V, m func(v V) (K, R)) map[K][]R
ToMultiMap collects a stream using collector func to a multimap.
func Uniq ¶
func Uniq[V any, F comparable](values []V, getter func(v V) F) []V
Uniq filters unique elements by predicate that returns any comparable value.
func Unique ¶
func Unique[V comparable](values []V, transform ...func(v V) V) []V
Unique filters unique elements from a slice.