协程分步理解 - Go语言中文社区

协程分步理解


这几天学习到了协程,说实话真是不太好理解,但是只要坚持看下去, 好像还是可以看明白的.

所以大家不要泄气, 一定要努力想办法慢慢理解.

下面上一个小示例咱们一起研究一下.


执行结果为:


刚开始确实不明白到底是什么意思, 所以就回头重新学习generator(生成器).

果然温故而知新, 再次学习之后了解到了:

        next函数与send函数很相似,都能获得生成器的下一个yield后面表达式的值,不同的是send函数可以向生成器传参并且获得yield后面的表达式的值,但是要使用send函数必须先得到generator, 不然会报错

接下来一步一步的学习具体内容:

1, 首先执行 produce方法,  执行c.send(None)获取generator,执行consumer方法到了第4行, 此时传进去一个None, 返回一个""(空字符串),只不过我们没有接受

2, 继续执行while打印    Producing1...

3,执行c.send(n) 此时接着执行consumer方法, 从第4行继续执行,拿到外部传进去的数字n即1, 第7行打印结果 Consuming1...  ,继续执行第8行r="200 OK",接下来继续执行while, 再次到了yield, 此时返回r的值为"200 OK",此时来到了produce方法的第17行, 打印获取的r的值   Consumerreturn: 200 OK

4,重复执行步骤2, 3

我刚学习Python没多久, 这是我自己的理解, 如果有不对的地方希望大家指正一起学习.谢谢

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/43405a9ac979
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 13:08:31
  • 阅读 ( 1199 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

推荐文章

猜你喜欢