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

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

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

Go
牛魔王的故事 2021-03-21 12:59:27
我总是读到“ goto”这个可怕的东西。但是今天,在阅读有关Google编程语言Go的文章时,我发现它取代了协程(Goroutines)。问题是:Coroutine == GoTo或者Coroutine != GoTo?为什么?
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

关键区别在于,goto支持它们的语言所用的语句允许无限制地跳转到程序中的任何位置。虽然协程在表面上看起来很相似,但是却有很大的不同。

协程允许暂停过程(及其所有上下文)并在某些位置恢复。因此,尽管协程yield在它们完成之前先暂停并控制其他过程,然后再恢复,但这些过程产生和恢复的时间点是提前知道的。

无法简单地跳到过程中的任意行,相关过程必须等待在特定位置恢复。尽管这种控制传递的结构比通过goto它来结构化得多,但可以通过过度使用这种强大的机制来编写令人困惑的代码。再有,每种强大的编程语言功能都不都是这种情况吗?;-)


查看完整回答
反对 回复 2021-03-22
  • 2 回答
  • 0 关注
  • 401 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信