Sobes.tech
Назад к вопросам
Junior — Middle
83

В каком месте в коде необходимо закрывать канал?

Компании, где спрашивали
Startribe

Ответ от нейросети

sobes.tech AI

В Go канал следует закрывать в том месте, где он создаётся и где больше не планируется отправлять данные. Обычно это делает отправитель, чтобы сигнализировать получателям, что данных больше не будет.

Важно:

  • Получатели могут проверять закрытие канала при чтении.
  • Закрывать канал должен только отправитель, чтобы избежать паники.

Пример:

ch := make(chan int)
go func() {
    defer close(ch) // закрываем канал после отправки всех данных
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val) // получаем данные, пока канал не закроется
}