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

Какое число раз необходимо закрывать канал в Go, чтобы избежать ошибок?

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

sobes.tech AI

Канал в Go необходимо закрывать ровно один раз, когда больше не планируется отправлять в него данные. Закрывать канал несколько раз приведёт к панике (runtime panic).

Важно:

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

Пример:

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

for val := range ch {
    fmt.Println(val)
}

В этом примере канал закрывается один раз после отправки всех значений.