Циклы

В Go только один вид цикла — for. Он покрывает все три сценария.

for i := 0; i < 5; i++ {
    fmt.Println(i)
}
n := 1
for n < 100 {
    n *= 2
}
for {
    // выход через break или return
}

range перебирает коллекции: срезы, строки, карты, каналы.

nums := []int{2, 4, 6, 8}

for i, v := range nums {
    fmt.Println(i, v)   // индекс и значение
}
for _, v := range nums {
    fmt.Println(v)      // только значение
}

При переборе строки range декодирует байты в руны — корректно для UTF-8.

for i := 0; i < 10; i++ {
    if i%2 == 0 {
        continue
    }
    if i == 7 {
        break
    }
    fmt.Println(i) // 1 3 5
}

Метки позволяют выйти из вложенного цикла:

outer:
    for i := 0; i < 3; i++ {
        for j := 0; j < 3; j++ {
            if i+j == 3 {
                break outer
            }
        }
    }

ЗаданиеСложность
1Упражнение 1easy
2Упражнение 2easy
3Упражнение 3easy
4Упражнение 4medium
5Упражнение 5medium