Ответ
При чтении из закрытого канала возвращается нулевое значение типа и флаг false. Это позволяет отличить реальное нулевое значение от ситуации, когда канал закрыт. Пример:
ch := make(chan int)
close(ch)
val, ok := <-ch
// val = 0, ok = false
Без флага ok невозможно определить, было ли получено нулевое значение или канал закрыт. Это особенно важно в циклах for range, которые автоматически завершаются при закрытии канала.