0Pricing
Go Academy · Урок

break, continue и метки

Управление потоком циклов и выходы с метками

«break, continue и метки» — бесплатный урок Go Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Go Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Go Academy содержит 4 уроков всего.

Основы управления циклами

В Go есть три ключевых слова для управления выполнением циклов:

  • break — выходит из текущего цикла или switch
  • continue — переходит к следующей итерации
  • goto — переходит к инструкции с меткой; используется редко

Метки позволяют использовать break и continue для внешних циклов.

break в цикле

break немедленно выходит из самой внутренней инструкции for, switch или select:

for i := 0; i < 100; i++ {
    if i*i > 50 {
        break
    }
    fmt.Println(i)
}

continue

continue пропускает остаток тела текущего цикла и переходит к инструкции завершения или проверке условия:

for i := 0; i < 10; i++ {
    if i%2 == 0 {
        continue // skip even numbers
    }
    fmt.Println(i) // prints 1,3,5,7,9
}

Именованный break

Метка перед циклом for позволяет выйти из него из внутреннего цикла:

search:
for i, row := range grid {
    for j, cell := range row {
        if cell == target {
            fmt.Printf("found at %d,%d\n", i, j)
            break search
        }
    }
}

Именованный continue

Именованный continue переходит к следующей итерации внешнего цикла, обозначенного меткой:

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

Когда использовать метки

Метки уместны, когда:

  • Нужно выйти из вложенного цикла, находясь глубоко внутри него
  • Выделение логики в отдельную функцию было бы слишком многословным

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

goto (редко)

В Go есть goto для перехода к инструкции с меткой. Его можно использовать только внутри одной функции; при этом нельзя перепрыгивать через объявления переменных:

  • Сценарии использования: сгенерированный код и компактные циклы обработки ошибок
  • Избегайте его в написанном вручную коде — предпочитайте структурированное управление потоком выполнения

break в select

Внутри инструкции select команда break выходит из select, а не из внешнего цикла for. Для выхода из внешнего цикла используйте именованный break:

loop:
for {
    select {
    case msg := <-ch:
        handle(msg)
    case <-done:
        break loop
    }
}

Избегайте глубокой вложенности

Глубоко вложенные циклы сложно читать. Прежде чем добавлять именованный break, спросите себя:

  • Можно ли выделить внутренний цикл во вспомогательную функцию?
  • Можно ли использовать канал или срез, чтобы упростить итерацию?
  • Могут ли ранние возвраты уменьшить вложенность на внешнем уровне?

Практический шаблон: поиск с помощью break

Распространённый шаблон: перебрать коллекцию и выйти с помощью break после нахождения элемента:

func contains(slice []string, target string) bool {
    for _, v := range slice {
        if v == target {
            return true // prefer return over break+flag
        }
    }
    return false
}

Быстрая проверка

Как выйти из внешнего цикла изнутри внутреннего цикла в Go?

Итоги: break, continue и метки

Эффективно управляйте потоком циклов в Go:

  • break выходит из текущего цикла или switch
  • continue переходит к следующей итерации
  • Метки позволяют направить break/continue во внешний цикл
  • goto существует, но редко используется в идиоматичном Go
  • Внутри select используйте именованный break, чтобы выйти из внешнего цикла for

Следующий курс: функции и несколько возвращаемых значений.

Часто задаваемые вопросы

Урок «break, continue и метки» бесплатный?

Да — полный текст урока «break, continue и метки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Go Academy, подпишись на CoddyKit PRO. Курс Go Academy содержит 4 уроков всего.

Чему я научусь в уроке «break, continue и метки»?

Управление потоком циклов и выходы с метками Ты практикуешь Go Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Go Academy?

Предыдущий опыт не требуется. Go Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «break, continue и метки»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Go Academy?

Да. Каждый урок Go Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Операторы if и выражения инициализации
  2. Цикл for: все варианты
  3. Операторы switch в Go
  4. break, continue и метки
← Назад к Go Academy