Цикл for в Go
Когда нужно выполнить один и тот же блок кода определённое количество раз, используйте цикл for.
Во многих языках есть несколько видов циклов, но в Go есть только этот.
Синтаксис цикла for в Go
statement1 задаёт начальное значение счётчика цикла.
statement2 — это проверка, которая выполняется на каждой итерации. Результат true продолжает цикл, а результат false останавливает его.
statement3 увеличивает счётчик.
Пример
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
for i := 0; i < 5; i++ {
fmt.Println(i)
}
}
Синтаксис for
for statement1; statement2; statement3 {
// code to be executed for each iteration
}
Оператор continue
Используйте continue, когда нужно пропустить оставшуюся часть текущей итерации и перейти к следующей. Так можно пропустить одну или несколько итераций. Здесь значение 3 пропускается, поэтому оно не выводится.
Пример
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
for i := 0; i < 5; i++ {
if i == 3 {
continue
}
fmt.Println(i)
}
}
Оператор break
Оператор break сразу завершает цикл, даже если его условие всё ещё истинно. Здесь цикл останавливается, как только i достигает 3.
Пример
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
for i := 0; i < 5; i++ {
if i == 3 {
break
}
fmt.Println(i)
}
}
Вложенные циклы
Один цикл может находиться внутри другого. На каждом проходе внешнего цикла внутренний цикл выполняется от начала до конца. В этом примере каждое прилагательное выводится с каждым из трёх фруктов.
Пример
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
adj := [2]string{"big", "tasty"}
fruits := [3]string{"apple", "orange", "banana"}
for i := 0; i < len(adj); i++ {
for j := 0; j < len(fruits); j++ {
fmt.Println(adj[i], fruits[j])
}
}
}
Ключевое слово range
Чтобы перебирать элементы массива, slice или map с меньшим количеством кода, используйте ключевое слово range. В этом примере оно даёт индекс и значение каждого элемента массива.
Пример
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
fruits := [3]string{"apple", "orange", "banana"}
for idx, val := range fruits {
fmt.Printf("%v\t%v\n", idx, val)
}
}