В приведённом виде программа не компилируется из-за неверного блока import. Если исправить импорты, foo вернёт √35, примерно 5.916079783099616.
Какой вывод получит консоль при выполнении программы №56
В приведённом виде программа не компилируется из-за неверного блока import. Если исправить импорты, foo вернёт √35, примерно 5.916079783099616.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, какой текст будет напечатан в консоль после запуска следующего 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() { k += 10} ()
return i
}
func main(){
fmt.Println(foo())
}
Ответ
В приведённом виде программа не компилируется из-за неверного блока import. Если исправить импорты, foo вернёт √35, примерно 5.916079783099616.
Объявите import ("fmt"; "math") с обычными переносами строк. Перед defer оператор return i присваивает именованному результату k значение 36. Отложенные функции идут в обратном порядке: k становится 46, затем 35, затем math.Sqrt(35). Именно изменение k влияет на возвращаемое значение.