Переход к следующей итерации конкретного цикла
Часть раздела Логика и управление потоком путешествия по GO на Coddy. Урок 3 из 68.
Как и в случае с использованием меток с break для выхода из определённых циклов, Go также позволяет использовать метки с инструкцией continue. Помеченная меткой инструкция continue пропускает текущую итерацию указанного цикла и переходит к следующей итерации.
Это особенно полезно во вложенных циклах, когда из внутреннего цикла нужно пропустить остаток текущей итерации внешнего цикла, а не просто продолжить внутренний цикл.
outer:
for i := 0; i < 3; i++ {
for j := 0; j < 3; j++ {
if i == 1 && j == 0 {
continue outer
}
fmt.Printf("i=%d, j=%d\n", i, j)
}
fmt.Println("End of outer loop iteration")
}В этом примере, когда i == 1 && j == 0, оператор continue outer пропускает оставшуюся часть текущей итерации внешнего цикла, включая внутренний цикл и сообщение «Конец итерации внешнего цикла». Затем программа сразу переходит к следующей итерации внешнего цикла, где i становится равным 2.
Задание
ЛегкоВ этом задании ты потренируешься использовать помеченные операторы continue для управления выполнением вложенных циклов. Ты создаёшь систему обработки данных, которой нужно пропускать определённые итерации внешнего цикла в зависимости от условий, обнаруженных во внутренних циклах.
Ты получишь два входных значения:
- Строку, представляющую количество строк для обработки (например,
"4") - Строку, представляющую число условия пропуска (например,
"3")
Тебе предоставлен следующий двумерный массив данных:
data := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
}Твоя задача:
- Преобразовать количество строк из первого входного значения, чтобы определить, сколько строк нужно обработать
- Преобразовать число условия пропуска из второго входного значения
- Использовать вложенные циклы с помеченным оператором
continueдля обработки данных - Для каждой строки проверить значение в каждом её столбце
- Если в каком-либо столбце строки обнаружено число условия пропуска, использовать помеченный оператор
continue, чтобы пропустить оставшуюся обработку этой строки и перейти к следующей - Для строк, не содержащих число условия пропуска, вывести
"Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]" - Для строк, содержащих число условия пропуска, вывести
"Skipping row [row_number] due to condition"
Номера строк нужно указывать с индексацией, начинающейся с 0 (первая строка — 0). Обрабатывай только количество строк, указанное во входном значении, и проверяй только первые 5 столбцов каждой строки.
Попробуйте сами
package main
import (
"fmt"
"strconv"
)
func main() {
// Считайте входные данные
var rowsInput string
var skipConditionInput string
fmt.Scanln(&rowsInput)
fmt.Scanln(&skipConditionInput)
// Преобразуйте входные данные
numRows, _ := strconv.Atoi(rowsInput)
skipCondition, _ := strconv.Atoi(skipConditionInput)
// Предоставленный двумерный массив данных
data := [][]int{
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25},
}
// TODO: Напишите свой код ниже
// Используйте вложенные циклы с помеченным continue для обработки данных
// Проверьте каждую строку на наличие числа, при котором её нужно пропустить
// Выведите соответствующие сообщения в зависимости от того, найдено ли это число
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутое управление потоком
Оператор switch с `fallthrough`Выход из вложенных цикловПереход к следующей итерации конкретного циклаОператор `goto`Повторение: расширенное управление циклами4Проект: простой список задач
Настройка проектаДобавление задачи2Структуры и методы
Определение методов для структурПолучатели-значенияПолучатели-указателиВыбор получателейМетоды и функцииПовторение: поведение структур5Карты: подробный разбор
Карты структурУказатели как значения картПроверка карт на nilСравнение картПовторение — счётчик частоты слов8Проект: простой складской учёт
Обзор проектаПроверка запасов3Интерфейсы (основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование типов интерфейсовПустой интерфейсУтверждения типовПереключатель типовПовторение — формы и поведениеПотренируйтесь самостоятельно: Онлайн-компилятор Go