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

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