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) )