Documentation ¶
Index ¶
- Constants
- func BinarySearch[V constraints.Ordered](arr []constraints2.CompareKey[V], x constraints2.CompareKey[V]) int
- func Cast[T1, T2 any, T1S ~[]T1](s T1S) []T2
- func Cast2[T1, T2 any, T1S ~[]T1, T2S ~[]T2](s T1S) T2S
- func Classify[S ~[]T, T any, K comparable, V any](s S, getKV func(T) (K, V)) map[K][]V
- func Contains[S ~[]T, T comparable](s S, v T) bool
- func ContainsByKey[S ~[]cmp.EqualKey[K], K comparable](s S, v K) bool
- func Deduplicate[S ~[]T, T comparable](slice S) S
- func Difference[S ~[]T, T comparable](a, b S) (S, S)
- func DifferenceByKey[S ~[]E, E cmp.EqualKey[T], T comparable](a, b S) (S, S)
- func DifferenceSet[S ~[]T, T comparable](a S, b S) S
- func DifferenceSetByKey[S ~[]E, E cmp.EqualKey[T], T comparable](a S, b S) S
- func Filter[S ~[]T, T any](fn func(T) bool, src S) S
- func ForEach[S ~[]T, T any](s S, handle func(idx int, v T))
- func ForEachIndex[S ~[]T, T any](s S, handle func(i int))
- func ForEachValue[S ~[]T, T any](s S, handle func(v T))
- func GrowSlice(et *reflect.Type, old reflect.Slice, cap int) reflect.Slice
- func GuardSlice(buf *[]byte, n int)
- func HasCoincide[S ~[]T, T comparable](s1, s2 S) bool
- func HasCoincideByKey[S ~[]E, E cmp.EqualKey[T], T comparable](s1, s2 S) bool
- func In[S ~[]T, T comparable](v T, s S) bool
- func InByKey[S ~[]E, E cmp.EqualKey[K], K comparable](key K, s S) bool
- func Intersection[S ~[]T, T comparable](a S, b S) S
- func IntersectionByKey[S ~[]E, E cmp.EqualKey[T], T comparable](a S, b S) S
- func IntersectionMap[S ~[]T, T comparable](a S, b S) map[T]struct{}
- func Join[S ~[]T, T fmt.Stringer](s S, sep string) string
- func JoinByIndex[S ~[]T, T any](s S, toString func(i int) string, sep string) string
- func JoinByValue[S ~[]T, T any](s S, toString func(v T) string, sep string) string
- func Map[T1, T2 any, T1S ~[]T1](s T1S, fn func(T1) T2) []T2
- func Map2[T1, T2 any, T1S ~[]T1, T2S ~[]T2](s T1S, fn func(T1) T2) T2S
- func Max[S ~[]T, T constraints.Number](s S) T
- func Min[S ~[]T, T constraints.Number](s S) T
- func OrderedArrayIntersection[S ~[]T, T constraints.Ordered](a S, b S) S
- func Ptr2SlicePtr(s unsafe.Pointer, l int, c int) unsafe.Pointer
- func Reduce[S ~[]T, T any](slices S, fn func(T, T) T) T
- func RemoveDuplicates[S ~[]T, T comparable](s S) S
- func RemoveDuplicatesByKey[S ~[]E, E cmp.EqualKey[T], T comparable](s S) S
- func RemoveDuplicatesByKeyRetainBehind[S ~[]E, E cmp.EqualKey[T], T comparable](s S) S
- func Reverse[S ~[]T, T any](s S) S
- func ReverseForEach[S ~[]T, T any](s S, handle func(idx int, v T))
- func Sort[T constraints.Ordered](s []T)
- func SortByKey[K constraints.Ordered, T cmpi.CompareKey[K]](s []T)
- func Swap[S ~[]T, T any](s S, i, j int)
- func ToMap[S ~[]T, T any, K comparable, V any](s S, getKV func(T) (K, V)) map[K]V
- func Union[S ~[]T, T comparable](a S, b S) S
- func UnionAndIntersectionAndDifference[S ~[]T, T comparable](a, b S) (S, S, S, S)
- func UnionByKey[S ~[]E, E cmp.EqualKey[T], T comparable](a S, b S) S
- type ComparableSlice
- type Index
- type MapSlice
- type Slice
- func (slice Slice[T]) Every(fn func(T) bool) bool
- func (slice Slice[T]) Filter(fn func(T) bool) []T
- func (slice Slice[T]) ForEach(fn func(T))
- func (slice Slice[T]) Len() int
- func (slice Slice[T]) Reduce(fn func(T, T) T) T
- func (slice Slice[T]) Some(fn func(T) bool) bool
- func (slice Slice[T]) Zip(s []T) [][2]T
Constants ¶
View Source
const SmallArrayLen = 32
Variables ¶
This section is empty.
Functions ¶
func BinarySearch ¶
func BinarySearch[V constraints.Ordered](arr []constraints2.CompareKey[V], x constraints2.CompareKey[V]) int
BinarySearch 二分查找
func Classify ¶
func Classify[S ~[]T, T any, K comparable, V any](s S, getKV func(T) (K, V)) map[K][]V
将切片按照某个key分类
func Contains ¶
func Contains[S ~[]T, T comparable](s S, v T) bool
func ContainsByKey ¶
func ContainsByKey[S ~[]cmp.EqualKey[K], K comparable](s S, v K) bool
func DifferenceByKey ¶
func DifferenceByKey[S ~[]E, E cmp.EqualKey[T], T comparable](a, b S) (S, S)
取差集,通过循环比较key
func DifferenceSetByKey ¶
func DifferenceSetByKey[S ~[]E, E cmp.EqualKey[T], T comparable](a S, b S) S
指定key取差集,返回为A-B
func ForEachValue ¶
func ForEachValue[S ~[]T, T any](s S, handle func(v T))
func GuardSlice ¶
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 In ¶
func In[S ~[]T, T comparable](v T, s S) bool
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 JoinByIndex ¶
func JoinByValue ¶
func Max ¶
func Max[S ~[]T, T constraints.Number](s S) T
func Min ¶
func Min[S ~[]T, T constraints.Number](s S) T
func OrderedArrayIntersection ¶
func OrderedArrayIntersection[S ~[]T, T constraints.Ordered](a S, b S) 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 ReverseForEach ¶
func Sort ¶
func Sort[T constraints.Ordered](s []T)
func SortByKey ¶
func SortByKey[K constraints.Ordered, T cmpi.CompareKey[K]](s []T)
func ToMap ¶
func ToMap[S ~[]T, T any, K comparable, V any](s S, getKV func(T) (K, V)) map[K]V
将切片转换为map
func UnionAndIntersectionAndDifference ¶
func UnionAndIntersectionAndDifference[S ~[]T, T comparable](a, b S) (S, S, S, S)
交集和差集,返回A∪B A∩B,A-B,B-A
Types ¶
type ComparableSlice ¶
type ComparableSlice[T comparable] []T
func (ComparableSlice[T]) Deduplicate ¶
func (slices ComparableSlice[T]) Deduplicate() ComparableSlice[T]
去重
type Index ¶
type Index[T any, I comparable] struct { sync.RWMutex // contains filtered or unexported fields }
Index 索引
func NewIndex ¶
func NewIndex[T any, I comparable]() *Index[T, I]
Click to show internal directories.
Click to hide internal directories.