82 lines
1.4 KiB
Go
82 lines
1.4 KiB
Go
package stream
|
|
|
|
type StreamI interface {
|
|
|
|
// 排序
|
|
Sort(fn SortFunc) StreamI
|
|
|
|
// 去重
|
|
Distinct(fn DistinctFunc) StreamI
|
|
|
|
// 过滤
|
|
Filter(fn FilterFunc) StreamI
|
|
|
|
// 分组
|
|
Group(fn GroupFunc) StreamI
|
|
|
|
// 反转
|
|
Reverse() StreamI
|
|
|
|
// 取前n个元素
|
|
Head(n int64) StreamI
|
|
|
|
// 映射元素到对应的处理结果
|
|
Map(fn MapFunc) StreamI
|
|
|
|
// 规约
|
|
Reduce(fn ReduceFunc) StreamI
|
|
|
|
// 统计数量
|
|
Count() int
|
|
|
|
// 取出第一个元素
|
|
First() any
|
|
|
|
// 取出最后元素
|
|
Last() any
|
|
|
|
// 遍历数据
|
|
ForEach(fn ForEachFunc)
|
|
|
|
// 根据底层channel进行数据处理
|
|
Handle(fn HandleFunc) (any, error)
|
|
|
|
// 输出规约
|
|
Collect(fn CollectFunc) (any, error)
|
|
}
|
|
|
|
type (
|
|
// CreateFunc 创建StreamI对象方法
|
|
CreateFunc func(source chan<- any)
|
|
|
|
// FilterFunc 过滤方法
|
|
FilterFunc func(item any) bool
|
|
|
|
// DistinctFunc 去重判断方法
|
|
DistinctFunc func(item any) bool
|
|
|
|
// GroupFunc 分组方法
|
|
GroupFunc func(item any) any
|
|
|
|
// SortFunc 排序方法
|
|
SortFunc func(a, b any) bool
|
|
|
|
// MapFunc map映射方法
|
|
MapFunc func(item any) any
|
|
|
|
// ReduceFunc 规约方法
|
|
ReduceFunc func(item1 any, item2 any) any
|
|
|
|
// WalkFunc 异步遍历channel中数据进行处理
|
|
WalkFunc func(item any, pipe chan<- any)
|
|
|
|
// HandleFunc 处理底层channel方法
|
|
HandleFunc func(pipe <-chan any) (any, error)
|
|
|
|
// CollectFunc 输出规约操作
|
|
CollectFunc func(pipe <-chan any) (any, error)
|
|
|
|
// ForEachFunc 遍历处理方法
|
|
ForEachFunc func(item any)
|
|
)
|