1 package main 2 3 import ( 4 "fmt" 5 "math/rand" 6 ) 7 8 func main ( ) { 9 feed : = make ( chan int ) 10 for i : = 0 ; i < 64 ; i + + { 11 go func ( feed chan int ) { 12 defer close ( feed ) 13 produce ( feed ) 14 } ( feed ) 15 } 16 17 total : = 0 18 for v : = range feed { 19 total + = v 20 } 21 22 fmt . Println ( total ) 23 } 24 25 func produce ( feed chan int ) { 26 amount : = rand . Intn ( 10 ) 27 for i : = 0 ; i < amount ; i + + { 28 feed < - amount 29 } 30 } Чем закончится программа? Выведет программа завершится и напечатает… Паника напечатает до паники, потом panic Deadlock all goroutines are asleep Не скомпилируется ошибка компиляции Гонка данных -race найдёт data race Недетерминировано вывод меняется от запуска к запуску Зависнет не завершится, но и не deadlock
Проверить Сначала подумай без запуска — на собесе компилятора не будет.