golang实现简单的流式处理

实现一个最简单的类似spark的流式处理流程
包含map和filter
数据

type Stream struct {
    data []int
}

map函数

func (s Stream) Map(f func(int) int) Stream {
    res := make([]int, 0, len(s.data))
    for _, item := range s.data {
        res = append(res, f(item))
    }
    return Stream{res}
}

fliter函数

func (s Stream) Filter(f func(int) bool) Stream {
    res := []int{}
    for _, item := range s.data {
        if f(item) {
            res = append(res, item)
        }
    }
    return Stream{res}
}

所有数据+1 > 过滤出偶数 > 过滤出大于5的数

func main() {
    stream := Stream{[]int{1, 3, 5, 7, 8}}
    fmt.Println(stream.data)
    stream = stream.
        Map(func(i int) int { return i + 1 }).
        Filter(func(i int) bool { return i%2 == 0 }).
        Filter(func(i int) bool { return i >5})
    fmt.Println(stream.data)

>>>[1 3 5 7 8]
   [6 8]
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。