Junior — Senior
53
Понимание порядка выполнения отложенных вызовов
Компании, где спрашивали:
Miatel
Условие задачи
Нужно определить, какой результат выведет программа. Разберитесь, как работают defer‑выражения в Go и влияет ли их порядок на возвращаемое значение функции.
package main
import (
"fmt"
"math"
)
func foo() (k float64) {
i := 36.0
defer func() { k = math.Sqrt(k) }()
defer func() { k -= 11 }()
defer func() { i += 10 }()
return 1
}
func main() {
fmt.Println(foo())
}