Найди баг: ch := make(chan int); ch <- 1; fmt.Println(<-ch)

Middle
174 просмотров
AFK Offer AI

Deadlock. Канал небуферизованный — отправка блокируется пока кто-то не прочитает. Но горутина одна — она заблокируется на ch <- 1 навсегда. Фиксы: make(chan int, 1) — буферизованный, или отправить в отдельной горутине: go func() { ch <- 1 }(). Runtime детектирует deadlock и паникует: "all goroutines are asleep".

Следующий вопрос

Как ты относишься к техническому долгу?