Вопрос

Я всегда читаю об ужасной вещи «гото».Но сегодня, читая о языке программирования Google Идти, я вижу, что он поддерживает Coroutines (Горутины).

Вопрос в том:

Coroutine == GoTo 

Или

Coroutine != GoTo?

Почему?

Это было полезно?

Решение

Горутины — это не то же самое, что goto — они выполняются параллельно с основным кодом.Когда вы заявляете что-то вроде (из их примера на http://golang.org/doc/efficient_go.html)

go list.Sort();  // run list.Sort in parallel; don't wait for it. 

основной код продолжает работать - он не ждет завершения сортировки.Процедура сортировки запускается в собственном облегченном потоке выполнения, и когда она завершает сортировку, поток завершается.

Переход к переходу приведет к тому, что основной код перейдет на отдельный путь выполнения, поэтому операторы после goto никогда бы не сбежал.

Другие советы

Ключевое отличие состоит в том, что goto операторы на языках, которые их поддерживают, позволяют переходить в любое место программы практически без ограничений.Хотя сопрограммы на первый взгляд могут показаться похожими, на самом деле они очень разные.

Сопрограммы позволяют приостанавливать процедуры (со всем их контекстом) и возобновлять их. определенный локации.Итак, пока сопрограммы делают паузу и yield контроль над другими процедурами до того, как они завершатся, а затем возобновятся позже, точки, в которых процедуры завершаются и возобновляются, известны заранее.

Невозможно просто перейти к произвольной строке процедуры, рассматриваемая процедура должна ожидать возобновления в определенном месте.Хотя эта передача контроля гораздо более структурирована, чем при goto злоупотребляя этим мощным механизмом, можно написать запутанный код.Опять же, разве это не относится к каждой мощной функции языка программирования?;-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top