Перейти до основного вмісту
Модуль 2 · Урок 2 із 57/50 у курсі~10 min
Модульні уроки (2/5)

для: єдина петля

У Go є єдина конструкція циклу: for. Ні while, ні do-while, ні foreach (що надходить на наступному уроці з range). Одне ключове слово охоплює всі випадки завдяки трьом формам.

Три форми for

Класична форма з трьох речень

Ідентичний C/Java:

Go
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

i має область дії, обмежену for. Ці три речення необов’язкові (ви можете опустіть будь-який із них), але ; залишиться, якщо ви опустите проміжний.

форма "поки": лише умова

У Go, while є просто for з одним виразом bool:

Go
i := 0
for i < 5 {
    fmt.Println(i)
    i++
}

Нескінченна форма

Без пропозицій цикл ніколи не припиняється (якщо не break/return):

Go
for {
    if exitCondition() {
        break
    }
    doWork()
}

Це шаблон для циклів обробки подій, серверів, політик повторів.

break, continue та мітки

break виходить із внутрішнього циклу, continue переходить до наступної ітерації:

Go
for i := 0; i < 10; i++ {
    if i%2 == 0 {
        continue       // salta i pari
    }
    if i > 7 {
        break          // ferma il ciclo
    }
    fmt.Println(i)     // 1 3 5 7
}

Для виходу з вкладених циклів існують мітки (рідкісні, але корисні):

Go
Esterno:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i*j == 4 {
            break Esterno   // esce da entrambi
        }
    }
}

Немає оператора ,, як у C

У Go не можна писати for i, j := 0, 10; i < j; i, j = i+1, j-1: пост-вираз не приймає багаторазові призначення. Використовуйте Go синтаксис множинного призначення:

Go
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
    fmt.Println(i, j)
}

Натомість це працює, оскільки i, j = i+1, j-1 є одним багаторазове призначення.

Спробуйте

вправи#go.m2.l2.e1
Спроби: 0Завантаження…

Виведіть числа від 0 до 4 включно з класичним трьома реченнями for.

Завантаження редактора…
Показати підказку

`для ініціалізації; конд; post { ... }` — тут ініціалізація `i := 0`.

Рішення доступне після 3 спроб

вправи#go.m2.l2.e2
Спроби: 0Завантаження…

Підсумуйте всі числа від 1 до 10 включно, використовуючи форму «while» для.

Завантаження редактора…
Показати підказку

форма 'while': `for &lt;умова&gt; { ... }`.

Рішення доступне після 3 спроб

Quiz#go.m2.l2.e3
Готовий

Яка форма представляє нескінченний цикл у Go?

Go
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }
Варіанти відповідей

Підведення підсумків

  • Одне ключове слово for з трьома формами: класична, поки, нескінченна.
  • break / continue додатково з міткою для вкладених циклів.
  • Мітка Name: перед for, використовуйте обережно.
  • Ні , як оператор: використовуйте множинне призначення i, j = ..., ....