美文网首页
golang实现简单的流式处理

golang实现简单的流式处理

作者: nil_ddea | 来源:发表于2020-10-08 22:26 被阅读0次

    实现一个最简单的类似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]
    }
    

    相关文章

      网友评论

          本文标题:golang实现简单的流式处理

          本文链接:https://www.haomeiwen.com/subject/idckpktx.html