1 package main 2 3 import "fmt" 4 5 type elem struct { name string } 6 type box struct { elem * elem } 7 8 func ( b * box ) open ( ) elem { 9 return * b . elem 10 } 11 12 func ( b * box ) set ( e * elem ) { 13 b . elem = e 14 } 15 16 func boxAll ( items [ ] elem ) ( result [ ] * box ) { 17 for _ , it : = range items { 18 bx : = new ( box ) 19 bx . set ( & it ) 20 result = append ( result , bx ) 21 } 22 return result 23 } 24 25 func main ( ) { 26 items : = [ ] elem { 27 { "a" } , 28 { "b" } , 29 { "c" } , 30 } 31 32 boxes : = boxAll ( items ) 33 for _ , bx : = range boxes { 34 fmt . Println ( bx . open ( ) ) 35 } 36 } Чем закончится программа? Выведет программа завершится и напечатает… Паника напечатает до паники, потом panic Deadlock all goroutines are asleep Не скомпилируется ошибка компиляции Гонка данных -race найдёт data race Недетерминировано вывод меняется от запуска к запуску Зависнет не завершится, но и не deadlock
Проверить Сначала подумай без запуска — на собесе компилятора не будет.