> Когда завершится цикл for при чтении из канала в Go (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Лига Цифровой Экономики

Стек: Go

> Пример ответа

Цикл for range по каналу завершится, когда канал будет закрыт, и все оставшиеся в нём значения будут прочитаны. Если канал не закрыть, цикл будет блокироваться в ожидании новых данных и никогда не завершится - это приведёт к утечке горутины.

Пример:

GO
ch := make(chan int)
go func() {
for i := 0; i < 3; i++ {
ch <- i
}
close(ch) // без этого for никогда не завершится
}()
for v := range ch {
fmt.Println(v)
}

Важно: закрытие канала - ответственность отправителя. Чтение из закрытого канала возвращает нулевое значение, но for range автоматически выходит при закрытии.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью