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