Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
6
Устранить panic при попытке записи в уже закрытый канал
Компании, где спрашивали:
Lamoda Tech
Условие задачи
В данном примере программа падает с 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)
}