La differenza principale è che le istruzioni goto
nelle lingue che li supportano consentono di saltare a qualsiasi posizione nel programma con restrizioni minime o inesistenti. Mentre le coroutine sulla superficie sembrano simili, sono molto diverse.
Le coroutine consentono di sospendere le procedure (con tutto il loro contesto) e di riprendere a determinate posizioni. Pertanto, mentre le coroutine fanno una pausa e il controllo yield
in altre procedure prima che vengano completate e quindi riprese in un secondo momento, i punti da cui le procedure producono e riprendono sono noti in anticipo.
Non è possibile saltare semplicemente a una linea arbitraria in una procedura, la procedura in questione deve attendere di essere ripresa in una posizione specifica. Mentre questo passaggio di controllo è molto più strutturato rispetto a goto
, è possibile scrivere codice confuso sfruttando questo potente meccanismo. Quindi, di nuovo, non è il caso di tutte le potenti funzionalità del linguaggio di programmazione? ;-)
fonte
2009-11-11 21:44:25
Scoprirai anche che Goroutine! = Coroutine. Una Goroutine è più simile a un thread con creazione e gestione davvero semplici. http://golang.org/doc/effective_go.html#goroutines –