Чтение всегда возможно: получаем нулевое значение типа и ok == false. Закрытие канала - способ сигнализировать "данных больше не будет". Многократное чтение из закрытого канала не блокирует и не паникует.
v, ok := <-ch
if !ok { /* channel closed */ }