Назад к вопросам
JuniorТеорияЧасто
Что произойдёт при сборке и запуске программы?
package main
import "fmt"
func main() {
ch := make(chan int)
ch <- 1
fmt.Println(<-ch)
}Ошибка выполнения: все горутины заблокированы (deadlock)
- Ждать
1: небуферизованный канал ничего не хранит, поэтомуch <- 1ждёт получателя, а приём на следующей строке так и не начинается. - Ждать, что программа молча зависнет: среда выполнения видит, что все горутины заблокированы, и завершает её с
fatal error: all goroutines are asleep - deadlock!.
- Как изменит исход
make(chan int, 1)? - Как ещё заставить программу напечатать
1, оставив канал небуферизованным?