service/library/stream/streamI.go

82 lines
1.4 KiB
Go
Raw Permalink Normal View History

2023-12-21 22:17:40 +08:00
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)
)