пятница, 21 июня 2019 г.

Спецификация Go: goto утверждения (goto statements)

Утверждение "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 нет.


Читайте также:


Комментариев нет:

Отправить комментарий