Области действия переменных и именованные константы
В Go мы можем использовать пару {и } для формирования блока кода. Блок кода может вкладываться в другие блоки кода. Переменная или именованная константы, объявленные во внутреннем блоке кода, затеняют переменные и константы, объявленные с тем же именем во внешних блоках кода. Например, следующая программа объявляет три разные переменные, все они называются x. Внутреннее x затмевает внешнее.
Область видимости (диапазон видимости в коде) переменной уровня пакета (или именованной константы) — это весь пакет, в котором объявлена переменная (или именованная константа). Область действия локальной переменной (или именованной константы) начинается в конце его объявления и заканчивается в конце блока кода, где была объявлена переменная. Вот почему последняя строка в main функции из приведенного выше примера не компилируется.