Циклы
В Go только один вид цикла — for. Он покрывает все три сценария.
Классический for
for i := 0; i < 5; i++ {
fmt.Println(i)
}
Цикл-while
n := 1
for n < 100 {
n *= 2
}
Бесконечный цикл
for {
// выход через break или return
}
range
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.
break и continue
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 | Упражнение 1 | easy |
| 2 | Упражнение 2 | easy |
| 3 | Упражнение 3 | easy |
| 4 | Упражнение 4 | medium |
| 5 | Упражнение 5 | medium |