Выведет 1, а не 2. Аргументы defer вычисляются немедленно (в момент defer), а не при вызове deferred функции. x == 1 в момент defer, поэтому 1. Если нужно захватить текущее значение — используй closure: defer func() { fmt.Println(x) }() — выведет 2, потому что closure захватывает переменную по ссылке.
Что выведет: x := 1; defer fmt.Println(x); x = 2?
Middle
163 просмотровAFK Offer AI
Как определить bloat в PostgreSQL?