协程和“ goto”之间的区别?

我总是读到“ goto”这个可怕的东西。但是今天,在阅读有关Google编程语言Go的文章时,我发现它取代了协程(Goroutines)。

问题是:

Coroutine == GoTo

或者

Coroutine != GoTo?

为什么?


牛魔王的故事
浏览 402回答 2
2回答

慕田峪9158850

关键区别在于,goto支持它们的语言所用的语句允许无限制地跳转到程序中的任何位置。虽然协程在表面上看起来很相似,但是却有很大的不同。协程允许暂停过程(及其所有上下文)并在某些位置恢复。因此,尽管协程yield在它们完成之前先暂停并控制其他过程,然后再恢复,但这些过程产生和恢复的时间点是提前知道的。无法简单地跳到过程中的任意行,相关过程必须等待在特定位置恢复。尽管这种控制传递的结构比通过goto它来结构化得多,但可以通过过度使用这种强大的机制来编写令人困惑的代码。再有,每种强大的编程语言功能都不都是这种情况吗?;-)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go