我总是读到“ goto”这个可怕的东西。但是今天,在阅读有关Google编程语言Go的文章时,我发现它取代了协程(Goroutines)。问题是:Coroutine == GoTo或者Coroutine != GoTo?为什么?
2 回答
慕田峪9158850
TA贡献1794条经验 获得超7个赞
关键区别在于,goto
支持它们的语言所用的语句允许无限制地跳转到程序中的任何位置。虽然协程在表面上看起来很相似,但是却有很大的不同。
协程允许暂停过程(及其所有上下文)并在某些位置恢复。因此,尽管协程yield
在它们完成之前先暂停并控制其他过程,然后再恢复,但这些过程产生和恢复的时间点是提前知道的。
无法简单地跳到过程中的任意行,相关过程必须等待在特定位置恢复。尽管这种控制传递的结构比通过goto
它来结构化得多,但可以通过过度使用这种强大的机制来编写令人困惑的代码。再有,每种强大的编程语言功能都不都是这种情况吗?;-)
- 2 回答
- 0 关注
- 401 浏览
添加回答
举报
0/150
提交
取消