slices

package
v1.6.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 16, 2025 License: MIT, Apache-2.0 Imports: 12 Imported by: 2

Documentation

Index

Constants

View Source
const SmallArrayLen = 32

Variables

This section is empty.

Functions

func Classify

func Classify[S ~[]T, T any, K comparable, V any](s S, getKV func(T) (K, V)) map[K][]V

将切片按照某个key分类

func Convert

func Convert[T1S ~[]T1, T2S ~[]T2, T1, T2 any](s T1S) T2S

func Copy

func Copy[S ~[]T, T any](s S) S

func Deduplicate

func Deduplicate[S ~[]T, T comparable](slice S) S

去重

func Difference

func Difference[S ~[]T, T comparable](a, b S) (S, S)

两个数组各自相对的差集,返回为A-B,B-A

func DifferenceByKey

func DifferenceByKey[S ~[]E, E cmp.EqualKey[T], T comparable](a, b S) (S, S)

取差集,通过循环比较key

func DifferenceSet

func DifferenceSet[S ~[]T, T comparable](a S, b S) S

取差集,返回为A-B

func DifferenceSetByKey

func DifferenceSetByKey[S ~[]E, E cmp.EqualKey[T], T comparable](a S, b S) S

指定key取差集,返回为A-B

func Every

func Every[S ~[]T, T any](slice S, fn func(T) bool) bool

func Filter

func Filter[S ~[]T, T any](fn func(T) bool, src S) S

func FilterPlace

func FilterPlace[S ~[]T, T any](slices S, fn func(T) bool) S

func ForEach

func ForEach[S ~[]T, T any](s S, fn func(idx int, v T))

func ForEachIndex

func ForEachIndex[S ~[]T, T any](s S, fn func(i int))

遍历切片,参数为下标,利用闭包实现遍历

func ForEachValue

func ForEachValue[S ~[]T, T any](s S, fn func(v T))

func GroupBy

func GroupBy[S ~[]T, T any, K comparable](s S, getK func(T) K) map[K][]T

func GrowSlice

func GrowSlice(et *reflect.Type, old reflect.Slice, cap int) reflect.Slice

func GuardSlice

func GuardSlice(buf *[]byte, n int)

func HasCoincide

func HasCoincide[S ~[]T, T comparable](s1, s2 S) bool

没有泛型,范例,实际需根据不同类型各写一遍,用CmpKey,基本类型又用不了,go需要能给基本类型实现方法不能给外部类型实现方法 1.20以后字段均是comparable的结构体也是comparable的 判断是否有重合元素

func HasCoincideByKey

func HasCoincideByKey[S ~[]E, E cmp.EqualKey[T], T comparable](s1, s2 S) bool

func Intersection

func Intersection[S ~[]T, T comparable](a S, b S) S

取交集

func IntersectionByKey

func IntersectionByKey[S ~[]E, E cmp.EqualKey[T], T comparable](a S, b S) S

默认保留前一个的,靠前的元素

func IntersectionMap

func IntersectionMap[S ~[]T, T comparable](a S, b S) map[T]struct{}

func Map

func Map[T1S ~[]T1, T1, T2 any](s T1S, fn func(T1) T2) []T2

func Mean

func Mean[S ~[]T, T constraints.Number](data S) float64

Calculate the Mean of a slice of floats

func Median

func Median[S ~[]T, T constraints.Number](data S) T

Calculate the Median of a slice of floats

func OrderIterBy

func OrderIterBy[S ~[]T, T any](s S, cmp types.Comparator[T]) iter.Seq[T]

func OrderedArrayIntersection

func OrderedArrayIntersection[S ~[]T, T constraints.Ordered](a S, b S) S

有序数组取交集

func PtrToSlicePtr

func PtrToSlicePtr(s unsafe.Pointer, l int, c int) unsafe.Pointer

func Reduce

func Reduce[S ~[]T, T any](slices S, fn func(T, T) T) T

func Remove

func Remove[S ~[]T, T any](slices S, i int) S

func RemoveDuplicates

func RemoveDuplicates[S ~[]T, T comparable](s S) S

func RemoveDuplicatesByKey

func RemoveDuplicatesByKey[S ~[]E, E cmp.EqualKey[T], T comparable](s S) S

默认保留先遍历到的

func RemoveDuplicatesByKeyRetainBehind

func RemoveDuplicatesByKeyRetainBehind[S ~[]E, E cmp.EqualKey[T], T comparable](s S) S

func RemoveOutliersMean

func RemoveOutliersMean[S ~[]T, T constraints.Number](data S) float64

Remove outliers using the MAD method and calculate the Mean of the remaining data

func ReverseForEach

func ReverseForEach[S ~[]T, T any](s S, fn func(idx int, v T))

func Some

func Some[S ~[]T, T any](slice S, fn func(T) bool) bool

func Sum

func Sum[S ~[]T, T constraints.Ordered](s S) T

func ThreeDimensionalSlice

func ThreeDimensionalSlice[S ~[][][]T, T any](s S, rowStart, rowEnd, colStart, colEnd, sliceStart, sliceEnd int) S

func ToMap

func ToMap[S ~[]T, T any, K comparable, V any](s S, getKV func(T) (K, V)) map[K]V

将切片转换为map

func ToPtrs

func ToPtrs[S ~[]T, T any](s S) []*T

func TwoDimensionalSlice

func TwoDimensionalSlice[S ~[][]T, T any](s S, rowStart, rowEnd, colStart, colEnd int) S

func Union

func Union[S ~[]T, T comparable](a S, b S) S

取并集

func UnionAndIntersectionAndDifference

func UnionAndIntersectionAndDifference[S ~[]T, T comparable](a, b S) (S, S, S, S)

交集和差集,返回A∪B A∩B,A-B,B-A

func UnionByKey

func UnionByKey[S ~[]E, E cmp.EqualKey[T], T comparable](a S, b S) S

默认保留第一个的,靠前的

func Zip

func Zip[S ~[]T, T any](s1, s2 S) [][2]T

Types

type Collector

type Collector[S ~[]T, T any] struct {
}

func (Collector[S, T]) Append

func (c Collector[S, T]) Append(builder *S, element T)

func (Collector[S, T]) Builder

func (c Collector[S, T]) Builder() *S

func (Collector[S, T]) Finish

func (c Collector[S, T]) Finish(builder *S) S

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL