РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
5 of 1593 menu

Цикл for

Цикл for - это единственная циклическая конструкция в языке Go. В отличие от многих других языков, в Go нет циклов while или do-while - вместо них используется for с различными формами записи. Цикл for позволяет выполнять блок кода многократно, пока выполняется определенное условие, или перебирать элементы коллекций.

Синтаксис

Базовый синтаксис цикла for включает три компонента: инициализацию, условие и пост-выражение, разделенные точкой с запятой.

for init; condition; post { // body }

Где:

init - инициализация переменной счетчика condition - условие продолжения цикла post - выражение, выполняемое после каждой итерации

Все три компонента являются необязательными.

Стандартный цикл for

Самый распространенный вариант - цикл с инициализацией, условием и пост-выражением, как в языках C и Java.

package main import "fmt" func main() { for i := 0; i < 5; i++ { fmt.Println(i) } }

Результат выполнения кода:

0 1 2 3 4

Цикл while (for с условием)

В Go отсутствует ключевое слово while. Для создания цикла, выполняющегося пока условие истинно, используется for с одним условием (без инициализации и пост-выражения).

package main import "fmt" func main() { count := 0 for count < 3 { fmt.Println("Iteration:", count) count++ } }

Результат выполнения кода:

"Iteration: 0" "Iteration: 1" "Iteration: 2"

Бесконечный цикл

Если опустить условие, получится бесконечный цикл. Для выхода из такого цикла используется ключевое слово break.

package main import "fmt" func main() { count := 0 for { fmt.Println("Loop iteration:", count) count++ if count >= 3 { break } } }

Результат выполнения кода:

"Loop iteration: 0" "Loop iteration: 1" "Loop iteration: 2"

Перебор элементов массива и слайса

Для перебора элементов коллекций используется конструкция for range, которая возвращает индекс и значение элемента.

package main import "fmt" func main() { nums := []int{1, 2, 3, 4, 5} for index, value := range nums { fmt.Println(index, value) } }

Результат выполнения кода:

"0 1" "1 2" "2 3" "3 4" "4 5"

Если индекс не нужен, его можно пропустить с помощью символа подчеркивания.

package main import "fmt" func main() { nums := []int{1, 2, 3, 4, 5} for _, value := range nums { fmt.Println("Value:", value) } }

Результат выполнения кода:

"Value: 1" "Value: 2" "Value: 3" "Value: 4" "Value: 5"

Перебор строки

При переборе строки с помощью for range возвращаются кодовые точки Unicode (руны), а не байты.

package main import "fmt" func main() { str := "abcde" for index, runeValue := range str { fmt.Printf("%d: %c\n", index, runeValue) } }

Результат выполнения кода:

"0: a" "1: b" "2: c" "3: d" "4: e"

Перебор map

Цикл for range используется и для перебора элементов map, возвращая ключ и значение.

package main import "fmt" func main() { m := map[string]int{"a": 1, "b": 2, "c": 3} for key, value := range m { fmt.Println(key, value) } }

Результат выполнения кода (порядок может быть случайным):

"a 1" "b 2" "c 3"

Использование continue

Ключевое слово continue позволяет пропустить текущую итерацию и перейти к следующей.

package main import "fmt" func main() { for i := 0; i < 5; i++ { if i%2 == 0 { continue } fmt.Println("Odd number:", i) } }

Результат выполнения кода:

"Odd number: 1" "Odd number: 3"

Использование break

Ключевое слово break используется для досрочного выхода из цикла.

package main import "fmt" func main() { for i := 0; i < 10; i++ { if i == 5 { break } fmt.Println(i) } }

Результат выполнения кода:

0 1 2 3 4

Вложенные циклы

Циклы могут быть вложенными друг в друга. При этом break и continue влияют только на самый внутренний цикл.

package main import "fmt" func main() { for i := 0; i < 3; i++ { for j := 0; j < 3; j++ { fmt.Printf("%d,%d ", i, j) } fmt.Println() } }

Результат выполнения кода:

"0,0 0,1 0,2 " "1,0 1,1 1,2 " "2,0 2,1 2,2 "

Смотрите также

  • конструкцию if,
    которая выполняет код в зависимости от условия
  • конструкцию switch,
    которая выбирает один из нескольких вариантов выполнения
  • оператор break,
    который прерывает выполнение цикла
  • оператор continue,
    который переходит к следующей итерации цикла
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить