🔴 Сложный · 3 очк. Циклы и range
Как выйти из for цикла, содержащего select, при получении сигнала из канала done?
A break
B return
C break с меткой (labeled break)
D goto
Объяснение вопроса

Простой break внутри select выходит только из select, а не из внешнего for. Чтобы выйти из цикла при получении сигнала из канала done, нужен labeled break.

Loop:
for {
    select {
    case <-done:
        break Loop  // выход из for
    case data := <-ch:
        process(data)
    }
}

Без метки

for {
    select {
    case <-done:
        break  // выходит только из select, цикл продолжается!
    }
}

Метка Loop: ставится перед for, и break Loop передаёт управление за пределы цикла.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.