Введение

Использование циклов for в Go позволяет эффективно автоматизировать и повторять выполнение задач.

Понимание принципов контроля и работы циклов позволяет использовать в программе персонализированную логику. Вы можете контролировать циклы с помощью выражений break и continue.

Оператор Break

В языке Go оператор break останавливает выполнение текущего цикла. Выражение break почти всегда сочетается с условным выражением if.

Рассмотрим пример использования выражения break в цикле for:

break.go
package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i == 5 {
            fmt.Println("Breaking out of loop")
            break // break here
        }
        fmt.Println("The value of i is", i)
    }
    fmt.Println("Exiting program")
}

Эта небольшая программа создает цикл for, выполняющийся пока i меньше 10.

В цикле for содержится выражение if. Выражение if проверяет условие i и сравнивает значение с 5. Если значение i не равно 5, цикл продолжается и распечатывает значение i. Если значение i равно 5, цикл выполняет выражение break, печатает сообщение о выходе из цикла Breaking out of loop и останавливает выполнение цикла. После окончания выполнения программы распечатывается сообщение Exiting program, показывающее, что мы выполнили выход из цикла.

При выполнении этого кода результат будет выглядеть следующим образом:

Output
The value of i is 0 The value of i is 1 The value of i is 2 The value of i is 3 The value of i is 4 Breaking out of loop Exiting program

Это показывает, что когда целое число i оценивается как равное 5, цикл прекращается, о чем программу информирует выражение break.

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

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

nested.go
package main

import "fmt"

func main() {
    for outer := 0; outer < 5; outer++ {
        if outer == 3 {
            fmt.Println("Breaking out of outer loop")
            break // break here
        }
        fmt.Println("The value of outer is", outer)
        for inner := 0; inner < 5; inner++ {
            if inner == 2 {
                fmt.Println("Breaking out of inner loop")
                break // break here
            }
            fmt.Println("The value of inner is", inner)
        }
    }
    fmt.Println("Exiting program")
}

Эта программа содержит два цикла. Хотя оба цикла выполняют 5 итераций, в каждом из них есть условное выражение if с выражением break. Внешний цикл прекращается, если значение outer равняется 3. Внутренний цикл прекращается, если значение inner равняется 2.

Если мы запустим программу, результат будет выглядеть следующим образом:

Output
The value of outer is 0 The value of inner is 0 The value of inner is 1 Breaking out of inner loop The value of outer is 1 The value of inner is 0 The value of inner is 1 Breaking out of inner loop The value of outer is 2 The value of inner is 0 The value of inner is 1 Breaking out of inner loop Breaking out of outer loop Exiting program

Обратите внимание, что при остановке внутреннего цикла внешний цикл не останавливается. Это связано с тем, что выражение break останавливает только цикл самого низкого уровня, где оно вызывается.

Мы увидели, как выражение break останавливает выполнение цикла. Теперь посмотрим, как можно продолжить итерации цикла.

Оператор Continue

Выражение continue используется, когда вы хотите пропустить оставшуюся часть цикла, вернуться в начало цикла и продолжить новую итерацию этого цикла.

Как и выражение break, выражение continue обычно используется вместе с условным выражением if.

Мы используем ту же программу с циклом for, что и в предыдущем разделе «Выражение Break», но при этом используем выражение continue вместо выражения break:

continue.go
package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i == 5 {
            fmt.Println("Continuing loop")
            continue // break here
        }
        fmt.Println("The value of i is", i)
    }
    fmt.Println("Exiting program")
}

Отличие выражения continue от выражения break заключается в том, что код продолжит выполняться несмотря на прерывание, если переменная i будет оценена как равная 5. Посмотрим на результаты:

Output
The value of i is 0 The value of i is 1 The value of i is 2 The value of i is 3 The value of i is 4 Continuing loop The value of i is 6 The value of i is 7 The value of i is 8 The value of i is 9 Exiting program

Здесь вы видим, что строка The value of i is 5 не появляется в результатах, но цикл продолжает выполнение после этой точки и распечатывает строки для чисел 6-10 перед остановкой цикла.

Вы можете использовать выражение continue, чтобы избежать использования глубоко вложенного условного кода, или чтобы оптимизировать цикл, устранив часто встречающиеся случаи, которые вы хотите отклонять.

Выражение continue заставляет программу пропустить определенную часть цикла, а затем продолжить выполнение оставшейся части цикла.

Заключение

Выражения break и continue в Go позволят вам более эффективно использовать циклы for в программном коде.

0 Comments

Creative Commons License