Go: влияет ли заглавная буква на доступ к локальной переменной?

В Go область видимости переменной ограничена блоком, в котором она объявлена.

Короткий ответ

Что ответить на собеседовании

В Go область видимости переменной ограничена блоком, в котором она объявлена. Если переменная объявлена внутри фигурных скобок функции (локальная переменная), то она доступна только внутри этой функции и ее вложенных блоков. Публичность (экспортируемость) переменной в Go определяется заглавной буквой в имени и относится к видимости из других пакетов, а не внутри функции.

Подробный разбор

Ответ с пояснениями

В Go область видимости переменной ограничена блоком, в котором она объявлена. Если переменная объявлена внутри фигурных скобок функции (локальная переменная), то она доступна только внутри этой функции и ее вложенных блоков. Публичность (экспортируемость) переменной в Go определяется заглавной буквой в имени и относится к видимости из других пакетов, а не внутри функции.

Таким образом, внутри функции вы можете получить доступ к переменной, объявленной в ее фигурных скобках, если она объявлена в той же функции или во внешних областях видимости. Если переменная объявлена внутри функции, она локальна и доступна только внутри этой функции. Если же переменная объявлена вне функции и экспортируется (публичная), то внутри функции к ней тоже можно обратиться.

Пример:

package main

import "fmt"

var PublicVar = "доступна везде в пакете и из других пакетов"

func example() {
    localVar := "доступна только внутри example"
    fmt.Println(PublicVar) // доступ к публичной переменной
    fmt.Println(localVar)  // доступ к локальной переменной
}

func main() {
    example()
}

Если переменная объявлена внутри функции, она не может быть доступна вне этой функции, даже если она "публичная" по имени (с заглавной буквы).

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее