Senior
Wanneer worden de argumenten van uitgestelde functies berekend — op het moment van definitie of op het moment van aanroep van de functie?
sobes.tech AI
Antwoord van AI
В Go аргументы отложенных (deferred) функций вычисляются в момент объявления оператора defer, то есть в момент определения, а не в момент вызова самой отложенной функции. Это означает, что значения аргументов фиксируются сразу, а сама функция вызывается позже.
Пример:
package main
import "fmt"
func main() {
x := 10
defer fmt.Println(x) // x будет вычислено сейчас, равно 10
x = 20
}
Вывод будет 10, потому что аргумент x для fmt.Println захватывается в момент defer, а не при вызове.