Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
package main
import "fmt"
func main() {
x := 1
defer fmt.Print(x)
x++
defer fmt.Print(x)
x++
fmt.Print(x)
}321
- Ждать
333: аргументы отложенного вызова вычисляются на строке сdefer, поэтому два вызова запоминают1и2, а не итоговыйx. - Ждать
312: отложенные вызовы выполняются в обратном порядке, поэтому второйdeferс2срабатывает раньше первого с1.
- Как изменить первый
defer, чтобы он напечатал итоговое значениеx? - Что напечатает программа, если обе строки с
deferстоят после последнегоx++?