goto (англ. go to – «перейти к») – оператор безусловного перехода к определённой точке программы, обозначенной номером строки либо меткой.
В 1968 году, в своей статье «Обоснование пагубности оператора goto», Эдсгер Дейкстра отметил, что качество кода обратно пропорционально количеству goto, используемых в коде. Дейкстра утверждал (это просто его мнение), что:
- корректность кода без
gotoдоказать легче - код с операторами
gotoтрудно форматировать -
gotoвлияет на логическую структуру программы - применение
gotoпрепятствует оптимизации, выполняемой компилятором -
gotoусложняет анализ кода
На практике применение оператора goto, приводит к нарушению принципа хода алгоритма строго сверху вниз.
Сторонники goto выступают за осторожное применение оператора, при определенных условиях.
Большинство аргументов против goto, не говорит о полном отказе от этого оператора, а предостерегает от неразборчивого его использования.
Хорошее программирование не означает исключение всех goto.
Стремление к коду без goto не должно быть целью.
Десятилетия исследований оператора goto не смогли подтвердить его вредоносность, а теоретические и экспериментальные доводы, выдвигаемые против этого оператора, оказались не убедительными.
И наконец, операторы goto входят во множество современных языков, одним их которых является C#.
Microsoft часто использует goto при автогенерации кода, когда этот код не предназначен для восприятия и редактирования человеком. Корректность такого кода определяется корректностью создающего его инструмента.
Использование goto – это как вопрос религии.
Пример использования goto:

В данном случае из-за безусловного перехода (строки goto Label;) будет реализован вечный цикл и программа никогда не завершится, из-за чего это пример не очень хорошего использования данного оператора. Другой пример использования данного оператора в связке с условным оператором:
int counter = 0;
Label:
counter++;
Console.WriteLine("Counter = {0}", counter);
if (counter < 3)
{
goto Label;
}
Console.WriteLine("End");
В данном примере через оператор goto был реализован цикл, который выполнится три раза. Количество итераций цикла задаётся в условии условной конструкции и данный цикл напоминает собой работу цикла с постусловием.
Источник: видеоурок Александра Шевчука "ВИДЕОУРОК №6. ЦИКЛИЧЕСКИЕ КОНСТРУКЦИИ".
предыдущая статья