Выражение и декларация метки: goto
Как и многие другие языки, Go также поддерживает операторы goto. За ключевым словом goto должна следовать метка, чтобы сформировать объявление. Метка объявляется с формой LabelName:, где LabelName должен быть идентификатор. Метка, имя которой не является пустым идентификатором, должна использоваться хотя бы один раз.
Оператор goto заставит выполнение перейти к оператору, следующему за объявлением метки, используемой в операторе goto. Таким образом, за объявлением метки должен следовать один оператор.
Метка должна быть объявлена в теле функции. Использование метки может появиться до или после объявления метки. Но метка не видна и не может появиться за пределами самого внутреннего блока кода, в котором она объявлена.
В следующем примере оператор goto и метка используются для реализации потока управления циклом.
Как упоминалось выше, метка не видна и не может появиться за пределами самого
внутреннего блока кода, в котором она объявлена. Поэтому следующий пример не компилируется.
Обрати внимание, что если метка объявлена в области действия переменной, то использование метки не может появиться перед объявлением переменной.
Следующий пример также не компилируется.
Только что упомянутое правило может измениться позже. Чтобы приведенный выше код нормально компилировался, мы должны настроить область действия переменной k. Есть два способа решить проблему в последнем примере.
Подробнее об использовании метки перед объявлением переменной ты можешь узнать на сайте GitHub.
Один из способов решения проблемы — уменьшить область действия переменной k.
Другой способ — расширить область видимости переменной k.