📕
Golang
  • Собеседование по golang
  • Вопросы собеседования
    • Список вопросов МТС
    • Список вопросов
    • Базовые вопросы по Golang
    • Go. Прорабатываем 25 основных вопросов собеседования
    • Функции
    • Структуры данных
    • Конкурентность и Параллелизм
    • Горутины
    • Примитивы синхронизации
    • Планировщик
    • Go: конкурентность и привязки к потокам в планировщике
    • Каналы
    • GC
  • спецификация
    • Спецификация Go: преобразования в и из строкового типа
    • переключатель типов (type switch)
    • for утверждения (for statements)
    • for утверждения с range условием
    • go утверждения (go statements)
    • select утверждения (select statements)
    • return утверждения (return statements)
    • continue утверждения (continue statements)
    • goto утверждения (goto statements)
    • fallthrough утверждения (fallthrough statements, утверждения "провала")
    • defer утверждения (defer statements)
    • встроенные функции, функция close
    • длина и емкость
    • аллокация, создание срезов (slice), карт (map) и каналов
    • добавление в срезы и копирование срезов
    • удаление элементов карты
    • обработка паники
    • начальная загрузка (bootstrapping)
    • пакеты
    • инициализация и выполнение программы, нулевое значение
    • инициализация пакета
    • выполнение программы
    • ошибки
    • паника во время выполнения (run-time panic)
  • Эффективный go
    • эффективный go
    • 50 оттенков go
    • Go: распространенные антипаттерны
    • Визуализация concurrency в Go с WebGL
  • требования для работы
    • Список навыков
  • habr
    • Изучаем многопоточное программирование в Go по картинкам
    • Go: конкурентность и привязки к потокам в планировщике
  • NP
    • Полиморфизм с интерфейсами в Golang
    • Объектно-ориентированное программирование в Golang
    • Владеешь merge  -  освой и rebase
  • ProgLib
    • Горутины
  • Untitled
  • Оптимизация
    • Go: Должен ли я использовать указатель вместо копии моей структуры?
  • Полезняшки
    • Using PostgreSQL JSONB with Go
Powered by GitBook
On this page

Was this helpful?

  1. спецификация

for утверждения (for statements)

Утверждение "for" определяет повторное выполнение блока. Существует три формы: итерация может управляться единственным условием, "for" условием, "range" условием.

ForStmt = "for" [ Condition | ForClause | RangeClause ] Block .
Condition = Expression .

for утверждения с единственным условием

В своей простейшей форме "for" утверждение определяет повторное выполнение блока, пока булево условие оценивается как true. Условие оценивается перед каждой итерацией. Если условие отсутствует, оно эквивалентно логическому значению true.

for a < b {
    a *= 2
}

for утверждения с "for" условием

Утверждение "for" с ForClause также контролируется его условием, но дополнительно оно может указывать утверждения init и post, такие как утверждения присваивания, инкремента или декремента. Утверждение init может быть кратким объявлением переменной, но оператор post не должен. Переменные, объявленные утверждением init, повторно используются в каждой итерации.

ForClause = [ InitStmt ] ";" [ Condition ] ";" [ PostStmt ] .
InitStmt = SimpleStmt .
PostStmt = SimpleStmt .
for i := 0; i < 10; i++ {
    f(i)
}

Если не пусто, утверждение init выполняется один раз перед вычислением условия для первой итерации; оператор post выполняется после каждого выполнения блока (и только если блок был выполнен). Любой элемент ForClause может быть пустым, но точка с запятой обязательна, если только нет условия. Если условие отсутствует, оно эквивалентно логическому значению true.

for cond { S() }  то же самое что и  for ; cond ; { S() }
for      { S() }  то же самое что и  for true     { S() }
Previousпереключатель типов (type switch)Nextfor утверждения с range условием

Last updated 4 years ago

Was this helpful?