Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmLpCo 124 of 350 menu
◀ ▶

Переход к следующему кругу в Go

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

Пусть у нас есть числа от 1 до 9. Давайте переберем их циклом и числа, которые делятся на 2, возведем в квадрат и выведем, а числа, которые делятся на 3, возведем в куб и выведем.

Вот решение описанной задачи:

for i := 1; i <= 9; i++ { if i%2 == 0 { res := i * i fmt.Println(res) } else if i%3 == 0 { res := i * i * i fmt.Println(res) } }

Как вы видите, строчка вывода res повторяется два раза. Давайте вынесем ее за if, вот так:

for i := 1; i <= 9; i++ { res := 0 if i%2 == 0 { res = i * i } else if i%3 == 0 { res = i * i * i } fmt.Println(res) // вынесли вывод за условие }

Теперь код, однако, работает немного не так: вывод переменной res выполнится и для чисел, которые не прошли через if. По условию задачи это не нужно.

Поправим проблему, добавив к нашему if еще условие else, которое будет срабатывать для чисел, не делящихся на 2 и на 3, и вызовем там инструкцию continue, которая сразу же будет перебрасывать нас на новую итерацию цикла:

for i := 1; i <= 9; i++ { res := 0 if i%2 == 0 { res = i * i } else if i%3 == 0 { res = i * i * i } else { continue // перейдем на новую итерацию цикла } fmt.Println(res) // выполнится, если делится на 2 или 3 }

Переход к следующему кругу пропускает остаток текущего круга. Команда continue не завершает весь повтор, а сразу идет к шагу или к следующей проверке, не выполняя команды ниже в теле.

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

Печатаем числа от 0 до 5 не включая границу и пропускаем 3:

for i := 0; i < 6; i++ { if i == 3 { continue } fmt.Println(i) // выведет 0, 1, 2, 4 и 5 }

На круге с i == 3 команда вывода не выполняется, счетчик все равно получает шаг и идет дальше.

Даны переменные:

from := 1 to := 8

Обойдите числа от from до to включительно и не печатайте числа, дающие остаток 0 при делении на 2.

Дано число:

limit := 10

Переберите счетчик от 0, не включая limit. Выводите квадрат счетчика, но пропускайте круги, где он равен 0 или 5.

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

Напишите цикл, который выведет только четные числа от 1 до 100, пропуская нечетные с помощью continue.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить