Назад к задачам
Junior — Senior
6

Устранить panic при попытке записи в уже закрытый канал

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

Lamoda Tech
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В данном примере программа падает с panic: send on closed channel, потому что главный поток закрывает канал ch, не дождавшись завершения горутины, которая в это время пытается записать в канал. Требуется изменить поведение так, чтобы программа завершалась корректно, например, дождаться завершения горутины перед закрытием канала.

package main

import (
 "fmt"
 "time"
)

func main() {
 ch := make(chan int)

 go func() {
  ch <- 1
 }()

 time.Sleep(time.Millisecond * 500)
 close(ch)

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

 time.Sleep(time.Millisecond * 100)
}