Что такое приватная переменная

«Что такое приватная переменная» — вопрос из категории Архитектура, который задают на 24% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

  • Приватная (неэкспортируемая) - начинается со строчной буквы. Доступна только в пределах своего пакета.
  • Публичная (экспортируемая) - начинается с заглавной буквы. Доступна из других пакетов.

Пример:

package mypkg

var privateVar int    // приватная, доступна только в mypkg
var PublicVar string  // публичная, доступна извне

Важные нюансы:

  1. Приватность работает на уровне пакетов, а не структур
  2. Даже приватные поля структур можно читать/менять через рефлексию
  3. Вложенные пакеты не имеют доступа к приватным переменным родительского пакета