Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goPmCdSc 108 of 350 menu
◀ ▶

Область видимости в Go

Сейчас мы посмотрим, где видно имя, объявленное внутри ветки. Короткое объявление в фигурных скобках создает переменную только для этого блока. После закрывающей скобки обратиться нельзя.

Пусть проверка всегда истинна. Внутри ветки число можно напечатать. Строка после скобки закомментирована: снаружи этого имени нет, и с такой строкой программа бы не собралась:

if true { inner := 5 fmt.Println(inner) // сработает это } // fmt.Println(inner)

То же относится к имени из короткой команды перед проверкой. Оно живет только внутри всей конструкции с этой проверкой, включая обе ветки. Снаружи компилятор такое имя не найдет:

if step := 2; step > 0 { fmt.Println(step) // сработает это } // fmt.Println(step)

Если объявить переменную снаружи условия, она видна и внутри ветки, и после закрывающей скобки этой проверки:

outer := 1 if true { fmt.Println(outer) // сработает это } fmt.Println(outer) // сработает это

Скажите, соберется ли программа, если объявить tmp внутри ветки и вывести tmp после закрывающей скобки.

Дана переменная:

outer := 1

Внутри ветки с истинной проверкой выведите outer. Скажите, почему это допустимо.

Скажите, где видно имя из короткой записи с точкой с запятой перед проверкой и где этого имени уже нет.

Автор кода хотел проверить, достиг ли возраст 18 лет. Программа не собирается. Исправьте ошибку объявления:

age := 17 if age >= 18 { adult := true } else { adult := false } fmt.Println(adult)
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить