初级会员
  • 第 55962 位会员
  • Pikachu
  • 2020-08-24 09:16:18
  • Offline
  • 21 68

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • #9 @Felin5307 这是测试代码,以及结果。是我的代码写错了吗? ![go2.PNG](https://static.studygolang.com/200904/f395768cc9477899cbacb62754d26856.PNG)
  • #5 @yykpf 我添加了我的一些想法,看一下对吗? ![go.PNG](https://static.studygolang.com/200903/c472f21fc7da2e3581de7b50b297060d.PNG)
  • #6 @Felin5307 我后来重新学习了一下阻塞,又测试了一下,我发现ch的地址一直没有变化,无论第几次循环,ch 的地址都没有变化,但是 ch1 的地址每次循环都会更改。 所以我猜测一下,每次循环新建的这个`filter()`方法都是并行存在的,任务就是筛选出当前ch通道中能被prime整除的数。并且把ch1当前的值复制给 ch 中(ch 只是更新了一下数据,`generate()`会趁通道不阻塞时,往 ch 中追加数据。并且当通道 ch 不会被阻塞时,随机一个 `filter()` 方法筛选数据。)。我在下面追加了我猜测的运行图。
  • ![go3.PNG](https://static.studygolang.com/200902/3235554a6ccc0a9de1d4e4450b1f956b.PNG) 我实际尝试了一下,发现ch确实被修改了,感觉自己还是不太理解这种无缓冲通道的实际是怎么回事。 我还有一个问题,按照这样来说,每一次循环通道ch中的数据都变成了一个新的,那么我前一次的ch会有怎样的变化呢? 如果有新的ch加入,前一个就没有用了,我猜他会被鲨掉,是立刻呢?还是mian函数结束?(我猜的,它可能很有用,也许不会被干掉) 这么一想又有了新的问题,第一次循环完毕,最开始的ch其实是没用了,`generate()`会源源不断的提供整数。看似没用了,其实还有用。那既然ch都改了,程序怎么在以后的循环中一直拿到`generate()`的值呢? 还是学艺不精,希望大佬赐教。解决一下我心中的疑惑。不太了解每次循环的ch之间是什么关系
  • #1 @Felin5307 我其实想知道,每次循环后ch通道是个什么状态(其中的值是怎么改变的)。 你是说每次循环都会用值覆盖掉之前的ch通道吗?`go generate(ch)` 方法中是一个无限循环往通道赋值的一个函数。所以是第一次循环执行完毕之后 `generate()` 这个方法就已经被结束掉了吗? 其实我一直感觉协程应该是没有什么执行顺序的,但是我看到的感觉还是顺序执行的呢?