Продолжение конкретного цикла
Часть раздела Логика и управление потоком путешествия по GO на Coddy. Урок 3 из 68.
Подобно тому как можно использовать метки с break, чтобы выйти из определённых циклов, Go также позволяет использовать метки с оператором continue. Помеченный continue пропускает текущую итерацию указанного loop и переходит к следующей итерации.
Это особенно полезно в nested loops, когда нужно пропустить оставшуюся часть текущей iteration цикла outer из inner loop, а не просто продолжить inner loop.
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 пропускает оставшуюся часть текущей итерации внешнего цикла, включая внутренний цикл и сообщение «End of outer loop iteration». Затем программа переходит непосредственно к следующей итерации внешнего цикла, где i становится равным 2.
Задание
ЛегкоВ этом задании ты потренируешься использовать помеченные операторы continue для управления выполнением вложенных циклов. Ты создаёшь систему обработки данных, которой нужно пропускать определённые итерации внешнего цикла на основе условий, обнаруженных во внутренних циклах.
Ты получишь два входных значения:
- Значение string, представляющее number строк для обработки (например,
"4") - Значение string, представляющее number условия skip (например,
"3")
Тебе предоставлен следующий двумерный data array:
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}
}Твоя задача:
- Выполнить Parse number строк из первого входного значения, чтобы определить, сколько строк обработать
- Выполнить Parse number условия skip из второго входного значения
- Использовать вложенные циклы с помеченным
continueдля обработки данных - Для каждой строки проверить каждое значение столбца в этой строке
- Если в любом столбце строки найден number условия skip, использовать помеченный
continue, чтобы пропустить оставшуюся обработку этой строки и перейти к следующей строке - Для строк, которые не содержат number условия skip, вывести
"Processing row [row_number]: [value1] [value2] [value3] [value4] [value5]" - Для строк, которые содержат number условия skip, вывести
"Skipping row [row_number] due to condition"
Номера строк следует указывать с использованием индексации, начинающейся с 0 (первая строка имеет номер 0). Обработай только то number строк, которое указано в первом входном значении, и проверяй только первые 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Сравнение картИтоги: счетчик частоты слов3Интерфейсы (Основы)
Что такое интерфейс?Определение интерфейсаРеализация интерфейсаИспользование интерфейсных типовПустой интерфейсУтверждение типаПереключатель типовИтоги: Фигуры и поведениеПотренируйтесь самостоятельно: Онлайн-компилятор Go