Утверждения (statements) контролируют исполнение.
Statement =
Declaration | LabeledStmt | SimpleStmt |
GoStmt | ReturnStmt | BreakStmt | ContinueStmt | GotoStmt |
FallthroughStmt | Block | IfStmt | SwitchStmt | SelectStmt | ForStmt |
DeferStmt .
SimpleStmt = EmptyStmt | ExpressionStmt | SendStmt | IncDecStmt | Assignment | ShortVarDecl .
Завершающие утверждения (terminating statements)
Завершающее утверждение предотвращает выполнение всех утверждений, которые лексически появляются после него в одном и том же блоке. Следующие утверждения являются завершающими:
- "return" или "goto" утверждение
- Вызов встроенной функции panic.
- Блок, в котором список утверждений заканчивается завершающим утверждением.
-
"if" утверждение, в котором:
- ветка "else" присутствует, и
- обе ветви являются завершающими утверждениями.
-
Утверждение "for", в котором:
- нет утверждений "break", ссылающихся на утверждение "for", и
- условие цикла отсутствует.
-
Утверждение "switch", в котором:
- нет утверждений "break", ссылающихся на утверждение "switch",
- присуствует случай по умолчанию (default case), и
- список утверждений в каждом случае (case), включая значение по умолчанию (default case), оканчиваются завершающим утверждением или, возможно, помечены как "выпадающее" утверждение.
-
Утверждение "select", в котором:
- нет утверждений "break", ссылающихся на утверждение "select", и
- список утверждений в каждом случае (case), включая значение по умолчанию (default case), если оно присутствует, заканчиваются завершающим утверждением.
-
Помеченное утверждение (labeled statement), помечающее завершающее утверждение.
Все остальные утверждения не являются завершающими.
Список утверждений заканчивается завершающим утверждением, если список не пустой и его последнее непустое утверждение является завершающим.
Пустые утверждения
Пустое утверждение ничего не делает.
EmptyStmt = .
Помеченные утверждения (Labeled statements)
Помеченное утверждение может быть целью утверждения goto, break или continue.
LabeledStmt = Label ":" Statement .
Label = identifier .
Пример:
Error: log.Panic("error encountered")
// в данном случае Error является меткой (label)
Читайте также:
- Спецификация Go: первичные выражения (primary expressions), селекторы (selectors)
- Спецификация Go: выражения (expressions) - операнды, квалифицированные идентификаторы
- Спецификация Go: объявления и области видимости
Комментариев нет:
Отправить комментарий