Ответ
Папка internal в Go-проектах используется для хранения кода, который должен быть доступен только внутри текущего модуля (или его подпакетов). Это механизм инкапсуляции на уровне пакетов.
Особенности:
- Код из
internalнельзя импортировать извне модуля (компилятор Go блокирует такие попытки). - Подпакеты внутри
internalмогут импортировать друг друга.
Пример структуры:
project/
internal/
auth/
auth.go # Доступно только внутри проекта
cmd/
main.go # Может импортировать internal/auth
Зачем:
- Защищает внутреннюю логику от случайного использования другими модулями.
- Упрощает рефакторинг, так как внешние зависимости чётко ограничены.
Если код должен быть публичным — его размещают вне internal.