Sobes.tech
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())
}