Выход из цикла в Go
Пусть у нас есть вот такой цикл, выводящий
числа от 1 до 5:
for i := 1; i <= 5; i++ {
fmt.Println(i) // выведет 1, 2, 3, 4 и 5
}
Пусть перед нами стоит задача определить,
есть ли среди них число 3. Если есть -
выведем "Y", а если нет - ничего
не будем делать.
Решим нашу задачу:
for i := 1; i <= 5; i++ {
if i == 3 {
fmt.Println("Y") // выведет Y
}
}
Задача решена, однако, есть проблема: после
того, как число 3 уже найдено, перебор
все равно бессмысленно продолжается дальше,
тратя ресурсы процессора и замедляя работу
программы.
Оптимальнее было бы сразу после нахождения
числа завершить работу цикла. Это можно сделать
с помощью специальной инструкции break,
позволяющей досрочно завершить работу цикла.
Итак, давайте завершим цикл, как только нам
встретится число 3:
for i := 1; i <= 5; i++ {
if i == 3 {
fmt.Println("Y") // выведет Y
break // выйдем из цикла
}
}
Инструкция break завершает цикл for:
и со счетчиком, и с одной проверкой, и без шапки.
Отдельных циклов while и do-while в Go нет.
Выход из цикла останавливает повторы, даже если
проверка еще истинна. Команда break
стоит внутри тела и сразу передает управление
строке после всего цикла.
Ее используют, когда нужное значение уже найдено или дальнейшие круги бессмысленны. Счетчик в шапке при этом может еще не дойти до границы, но программа из повтора уже вышла.
Ищем первое число, которое не меньше 5,
и выходим, как только оно напечатано:
for i := 0; i < 10; i++ {
fmt.Println(i) // выведет 0, 1, 2, 3, 4 и 5
if i >= 5 {
break
}
}
Следующие значения счетчика уже не обрабатываются,
хотя проверка i < 10 еще была бы истинна.
Даны переменные:
factor := 3
maxProd := 20
Крутите счетчик от 1 вверх. Остановите
повтор, когда произведение счетчика на
factor станет больше maxProd.
Выведите последнее значение счетчика.
Даны переменные:
n := 1
target := 7
В повторе с проверкой увеличивайте n.
Выйдите, как только n станет равным
target. Перед выходом выведите n.
Скажите, выполнится ли тело еще раз после команды выхода в том же круге, если она стоит в середине блока.
Запустите цикл по числам от 5
до -3. Выводите их до тех пор,
пока не встретится число 0.
После этого цикл должен завершить
свою работу.
Даны числа от 4 до -3.
Найдите сумму чисел, расположенных
от начала диапазона до первого
отрицательного числа.
Дана строка "12534". Найдите
позицию первого символа "3"
(считаем, что этот символ обязательно
есть в строке).
Определите, сколько целых чисел, начиная
с числа 1, нужно сложить, чтобы
сумма получилась больше 100.