我總是讀到“ goto”這個可怕的東西。但是今天,在閱讀有關Google編程語言Go的文章時,我發現它取代了協程(Goroutines)。問題是:Coroutine == GoTo或者Coroutine != GoTo?為什么?
2 回答

慕田峪9158850
TA貢獻1794條經驗 獲得超7個贊
關鍵區別在于,goto
支持它們的語言所用的語句允許無限制地跳轉到程序中的任何位置。雖然協程在表面上看起來很相似,但是卻有很大的不同。
協程允許暫停過程(及其所有上下文)并在某些位置恢復。因此,盡管協程yield
在它們完成之前先暫停并控制其他過程,然后再恢復,但這些過程產生和恢復的時間點是提前知道的。
無法簡單地跳到過程中的任意行,相關過程必須等待在特定位置恢復。盡管這種控制傳遞的結構比通過goto
它來結構化得多,但可以通過過度使用這種強大的機制來編寫令人困惑的代碼。再有,每種強大的編程語言功能都不都是這種情況嗎?;-)
- 2 回答
- 0 關注
- 442 瀏覽
添加回答
舉報
0/150
提交
取消