golang实现简单的流式处理

nil_ddea · · 2448 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:nil_ddea

查看原文:golang实现简单的流式处理

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2448 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传