Back to questions
Middle+
6
Кто должен закрывать канал?
Companies where asked
WaterWal
Answer from AI
sobes.tech AI
Закрывать канал должен тот, кто его создал и больше не собирается отправлять в него данные. Это важно, чтобы избежать паники при попытке отправить данные в закрытый канал и чтобы получатели могли корректно определить конец потока данных.
Основные правила:
- Отправитель закрывает канал, когда больше не будет отправлять значения.
- Получатели не должны закрывать канал.
- Закрытие канала сигнализирует получателям, что новых данных не будет.
Пример:
func producer(ch chan<- int) {
for i := 0; i < 5; i++ {
ch <- i
}
close(ch) // Закрываем канал после отправки всех данных
}
func consumer(ch <-chan int) {
for val := range ch {
fmt.Println(val)
}
// Когда канал закрыт, цикл завершается
}
func main() {
ch := make(chan int)
go producer(ch)
consumer(ch)
}