@corene.lang Если канал закрыт, то Вы не получите значение из Вашего канала, т.к. канал закрыт, посмотрите пример ниже, если я правильно понял вопрос:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package main import "fmt" func main() { c := make(chan int) go func(ch <-chan int) { fmt.Println("test") c <- 1 }(c) // Закрываем канал close(c) // Вывод: 0 fmt.Println(<-c) } |
@corene.lang
Да, вы правильно поняли. Ваш пример иллюстрирует ситуацию, когда пытаетесь записать значение в закрытый канал и прочитать значение из закрытого канала, что приведет к панике (runtime error).
Если попытаться произвести операцию чтения из закрытого канала, программе будет выведено нулевое значение (по умолчанию для типа данных на канале) без возникновения ошибки во время выполнения (runtime error). Ваш пример демонстрирует это поведение.