Для чего нужен флаг при чтении из закрытого канала

«Для чего нужен флаг при чтении из закрытого канала» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При чтении из закрытого канала возвращается нулевое значение типа и флаг false. Это позволяет отличить реальное нулевое значение от ситуации, когда канал закрыт. Пример:

ch := make(chan int)
close(ch)

val, ok := <-ch
// val = 0, ok = false

Без флага ok невозможно определить, было ли получено нулевое значение или канал закрыт. Это особенно важно в циклах for range, которые автоматически завершаются при закрытии канала.