Операторы break и continue в циклах Go

При помощи циклов for в Go можно автоматизировать и повторно запускать задачи.

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

Операторы break

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

Читайте также: Условные операторы в Go

Давайте посмотрим на следующий пример применения оператора break в цикле for:

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.

Когда мы запустим этот код, мы получим такой вывод:

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 в каждый цикл отдельно, если этот цикл должен прерываться.

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.

Если вы запустите программу, вы увидите такой вывод:

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, который мы рассмотрели в предыдущем разделе, и попробуем использовать оператор continue, а не break:

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. Давайте посмотрим на вывод:

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 помогают более эффективно использовать циклы for в вашем коде Go.

Tags: ,