Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
package main
import "fmt"
func main() {
x := 1
if true {
x := 2
fmt.Print(x, " ")
}
fmt.Println(x)
}2 1
- Ждать
2 2:x := 2внутриifобъявляет новуюx, которая затеняет внешнюю; внешняяxостаётся1и печатается после блока. - Ждать ошибку компиляции из-за повторного объявления
x::=во внутреннем блоке объявляет отдельную переменную, и Go это разрешает.
- Как изменить одну строку, чтобы программа напечатала
2 2? - Почему
x := 3сразу послеx := 1в том же блоке не компилируется?