Небуферизованный канал ch := make(chan int). Горутина A выполняет ch <- 42. Горутина B ещё не дошла до <-ch. Что происходит с горутиной A в этот момент?
ch := make(chan int)
ch <- 42
<-ch
Горутина A помещает значение во внутренний буфер канала и продолжает выполнение
Горутина A завершается с ошибкой, так как получатель не готов принять значение
Горутина A блокируется на отправке, пока горутина B не выполнит приём из ch
Горутина A повторяет попытку отправки в цикле, пока получатель не окажется готов