Почему defer вызывается в начале выполнения функции? Я понимаю что defer вызывается снизу вверх, кто последний пришел тот первый ушел. Но почему была вызвана f() внути fmt.Println ?
package main
import "fmt"
func adder(sum int) func(int) int {
return func(x int) int {
sum += 1
fmt.Printf("type %d sum %d\n", x, sum)
return sum
}
}
func main() {
f := adder(5)
defer func(){
fmt.Println("defer 3 result", f(3))
}()
defer fmt.Println("defer 2 result", f(2))
f(1)
}
Результат
type 2 sum 6
type 1 sum 7
defer 2 result 6
type 3 sum 8
defer 3 result 8