Menu
CoddyTech

Выход из вложенных циклов

Часть раздела Логика и управление потоком путешествия по GO на Coddy. Урок 2 из 68.

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

Метка — это идентификатор, за которым следует двоеточие, который размещают перед циклом. Затем можно использовать break, за которым следует имя метки, чтобы выйти из этого конкретного цикла, даже находясь внутри вложенных циклов.

outer:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i == 1 && j == 1 {
            break outer
        }
        fmt.Printf("i=%d, j=%d\n", i, j)
    }
}

В этом примере, когда выполняется условие i == 1 && j == 1, команда break outer немедленно прерывает и внутренний, и внешний циклы. Это особенно полезно при поиске в двумерных структурах данных, когда нужно полностью остановить поиск после того, как найдено искомое.

challenge icon

Задание

Легко

В этом задании ты потренируешься использовать операторы break с метками, чтобы выходить из вложенных циклов при поиске в двумерной сетке. Тебе нужно найти в сетке заданное число и немедленно прекратить поиск, как только ты его найдёшь.

Тебе будут переданы два входных значения:

  • Строка, представляющая размеры сетки в формате "rows,cols" (например, "3,4")
  • Строка, представляющая число, которое нужно найти (например, "7")

Тебе предоставлена следующая двумерная сетка чисел:

grid := [][]int{
    {1, 2, 3, 4},
    {5, 6, 7, 8},
    {9, 10, 11, 12},
}

Твоя задача:

  1. Использовать значения, уже считанные за тебя в коде выше: rows и cols (сколько строк и столбцов сетки нужно просмотреть), target и grid
  2. Использовать вложенные циклы с break с меткой для поиска в сетке
  3. Когда найдёшь целевое число, вывести "Found [target] at position ([row], [col])" и немедленно выйти из обоих циклов с помощью break с меткой
  4. Если ты завершишь поиск, не найдя целевое число, вывести "Target [target] not found"

Позицию нужно указывать с использованием индексации с нуля (первая строка — 0, первый столбец — 0).

Попробуйте сами

    // TODO: Напишите свой код ниже
    // Используйте вложенные циклы с помеченным break для поиска целевого значения
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Go