Зачем нужна папка Internal

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

Ответ

Папка internal в Go-проектах используется для хранения кода, который должен быть доступен только внутри текущего модуля (или его подпакетов). Это механизм инкапсуляции на уровне пакетов.

Особенности:

  • Код из internal нельзя импортировать извне модуля (компилятор Go блокирует такие попытки).
  • Подпакеты внутри internal могут импортировать друг друга.

Пример структуры:

project/
  internal/
    auth/
      auth.go   # Доступно только внутри проекта
  cmd/
    main.go     # Может импортировать internal/auth

Зачем:

  • Защищает внутреннюю логику от случайного использования другими модулями.
  • Упрощает рефакторинг, так как внешние зависимости чётко ограничены.

Если код должен быть публичным — его размещают вне internal.