Вопрос: Как работает defer с изменяемыми переменными (когда вычисляются аргументы)?
Go
Junior
Без компании
Вопрос: Как работает defer с изменяемыми переменными (когда вычисляются аргументы)?
Ответы
Аргументы defer вычисляются сразу, а выполнение функции откладывается.
```go
package main
import "fmt"
func main() {
x := 10
defer fmt.Println("x in defer:", x) // аргумент вычислен сейчас
x = 20
fmt.Println("x now:", x)
}
```
Если нужно увидеть финальное значение — передайте указатель или используйте замыкание.
```go
x := 10
defer func() { fmt.Println("x final:", x) }()
x = 20
```