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

Получение данных из канала с задержкой и ограничением по времени

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

Определите, какие сообщения появятся в выводе программы, учитывая работу канала, паузы между отправками и срабатывание тайм‑аута в конструкции select.

func main() {
  ch := make(chan int)
  go func() {
    for i := 0; i < 5; i++ {
      ch <- i
      time.Sleep(time.Second)
    }
    close(ch)
  }()

  for {
    select {
    case v := <-ch:
      fmt.Println(v)
    case <-time.After(3 * time.Second):
      fmt.Println("timeout")
      break
    }
  }
}