1 package main 2 3 import "fmt" 4 5 func main ( ) { 6 byVal : = func ( xs [ ] int ) { 7 xs [ 0 ] + + 8 } 9 10 byValAppend : = func ( xs [ ] int ) { 11 xs = append ( xs , 500 ) 12 xs [ 0 ] + + 13 } 14 15 byPtr : = func ( xs * [ ] int ) { 16 ( * xs ) [ 0 ] + + 17 } 18 19 byPtrAppend : = func ( xs * [ ] int ) { 20 * xs = append ( * xs , 500 ) 21 ( * xs ) [ 0 ] + + 22 } 23 24 data : = [ ] int { 3 } 25 26 fmt . Println ( "len" , "item[0]" ) 27 byVal ( data ) 28 fmt . Println ( len ( data ) , data [ 0 ] ) 29 30 byValAppend ( data ) 31 fmt . Println ( len ( data ) , data [ 0 ] ) 32 33 byPtr ( & data ) 34 fmt . Println ( len ( data ) , data [ 0 ] ) 35 36 byPtrAppend ( & data ) 37 fmt . Println ( len ( data ) , data [ 0 ] ) 38 } Чем закончится программа? Выведет программа завершится и напечатает… Паника напечатает до паники, потом panic Deadlock all goroutines are asleep Не скомпилируется ошибка компиляции Гонка данных -race найдёт data race Недетерминировано вывод меняется от запуска к запуску Зависнет не завершится, но и не deadlock
Проверить Сначала подумай без запуска — на собесе компилятора не будет.