Утверждение "goto" передает управление в утверждение с соответствующей меткой в той же функции.
GotoStmt = "goto" Label .
goto Error
Выполнение утверждения "goto" не должно приводить к появлению в области видимости каких-либо переменных, которые еще не находились в области видимости на момент перехода. Например, этот пример:
goto L // плохо
v := 3
L:
ошибочен, потому что переход к метке L пропускает создание v.
Утверждение "goto" вне блока не может перейти к метке внутри этого блока. Например, этот пример:
if n%2 == 1 {
goto L1
}
for n > 0 {
f()
n--
L1:
f()
n--
}
ошибочен, потому что метка L1 находится внутри блока утверждения "for", а goto нет.
Читайте также:
- Спецификация Go: утверждения (statements), завершающие утверждения (terminating statements)
- Спецификация Go: объявления и области видимости
- Спецификация Go: лексические элементы
Комментариев нет:
Отправить комментарий