Tutorial

Использование выражений Break и Continue при работе с циклами в Go

Published on January 24, 2020
Русский
Использование выражений Break и Continue при работе с циклами в Go

Введение

Использование циклов 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 в программном коде.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel