为了账号安全,请及时绑定邮箱和手机立即绑定

搭建并行处理管道,感受GO语言魅力

难度中级
时长 2小时17分
学习人数
综合评分9.67
51人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.6 逻辑清晰
  • func ReadSource(reader io.Reader) <-chan int {
       out := make(chan int)
       go func() {
          buffer := make([]byte, 8)
          for  {
             n, err := reader.Read(buffer)
             if n > 0 {
                v := int(binary.BigEndian.Uint64(buffer))
                out <- v
             }
             if err != nil {
                break
             }
          }
          close(out)
       }()
       return out
    }
    
    func WriteSink(writer io.Writer, in <-chan int)  {
       for v := range in {
          buffer := make([]byte, 8)
          binary.BigEndian.PutUint64(buffer, uint64(v))
          writer.Write(buffer)
       }
    }
    
    func RandomSource(count int) <-chan int{
       out := make(chan int)
       go func() {
          for i := 0; i < count; i++ {
             out <- rand.Int()
          }
          close(out)
       }()
       return out
    }
    func main() {
       const filename = "large.in"
       const n = 100000000
       file, err := os.Create(filename)
       if err != nil {
          panic(err)
       }
       defer file.Close()
    
       p := pipeline.RandomSource(n)
       writer := bufio.NewWriter(file)
       pipeline.WriteSink(writer, p)
       writer.Flush()
    
       file, err = os.Open(filename)
       if err != nil {
          panic(err)
       }
       defer file.Close()
    
       p = pipeline.ReadSource(bufio.NewReader(file))
       count := 0
       for v := range p {
          fmt.Println(v)
          count++
          if count >= 100 {
             break
          }
       }
    }


    查看全部
    2 采集 收起 来源:文件读写

    2020-07-26

  • 进一步学习

    • go tool tour

    • http://docscn.studygolang.com/doc/

    • 期待我的 go 语言实战课


    查看全部
    1 采集 收起 来源:结语

    2020-08-02

  • go 语言三大特色

    1. 面向接口- Reader/ Writer 接口的使用

    2. 函数式编程

    3. 并发编程


    查看全部
    1 采集 收起 来源:结语

    2020-08-02

  • 课程回顾

    原始数据

    查看全部
    1 采集 收起 来源:结语

    2020-08-02

  • go tool tour确实是我上手go的第一步

    A tour of go,交互式教程

    查看全部
    1 采集 收起 来源:结语

    2020-02-27

  • 可以不用下载完整的IDE,可以在phpstorm安装go的插件也行

    查看全部
    1 采集 收起 来源:go语言安装

    2018-11-26

  • 架构图架构图https://img1.sycdn.imooc.com//5b7f9b5400016cf309650522.jpg

    查看全部
    1 采集 收起 来源:结语

    2018-08-24

  • 1,csp模型

    2,不需要锁、不需要callback

    3,并发编程

    查看全部
    1 采集 收起 来源:go语言设计

    2018-06-20

  • Go 语言的特性

    查看全部
    1 采集 收起 来源:go语言设计

    2018-03-27

  • 网络的扩展
    查看全部
  • 11145588
    查看全部
    1 采集 收起 来源:go语言趋势

    2017-12-19

  • 并发

    查看全部
    0 采集 收起 来源:go语言设计

    2022-10-19

  • 很多goroutine映射到一个线程。多对1的关系。


    chan是go里的一等公民。我们可以往chan里放不同类型的数据。也可以从一个声明的chan里取数据。


    demo 从8:00开始

    查看全部
  • - pipeline:一個library

    查看全部
    0 采集 收起 来源:基础节点

    2021-08-10

  • - pipeline:一個library

    查看全部
    0 采集 收起 来源:基础节点

    2021-08-10

首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
1、了解一门编程语言,对基本算法如排序有了解
老师告诉你能学到什么?
1、go语言的历史和设计初衷 2、go语言的安装与开发环境 3、简单的go语言程序 4、了解go语言并发编程 5、实现一个并行数据处理管道

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!