← Назад
Аргументы отложенной функции оцениваются, когда оценивается оператор defer
:
func a() {
i := 0
defer fmt.Println(i)
i++
return
}
// 0
Отложенные вызовы функций выполняются в порядке “последний пришел - первый вышел” (Last In First Out, LIFO) после возврата окружающей функции:
func b() {
for i := 0; i < 4; i++ {
defer fmt.Print(i)
}
}
// 3210
Отложенные функции могут читать и присваивать возвращаемой функции именованные возвращаемые значения:
func c() (i int) {
defer func() { i++ }()
return 1
}
// 2
← Назад