Структура проекта в Go

06.10.2024 - Alexey Nurgaliev - Программирование - Go

Go как язык и как система сборки не определяют требований к структуре каталогов с исходным кодом. Есть рекомендации, официальная и некоторые неофициальные, как организовывать код в проекте, например:

Официальная документация предлагает особо не усложнять структуру проектов. Публичные модули класть в свои каталоги, приватные - в каталог internal, чтобы случайно их не импортировать в другой проект. И класть в internal по возможности все, что явно не будет доступно в виде отдельного модуля. Команды рекомендуется класть в подкаталоги каталога cmd, т.е. путь к точке входа в команду будет cmd/имя_команды/main.go. При этом официальная документация допускает, что просто накидать все в один каталог (а то и в один файл) - тоже допустимый вариант.

Рекомендуется давать модулю полное наименование, включая домен репозитория: module github.com/YOUR-USER-OR-ORG-NAME/YOUR-REPO-NAME.

Построить приложение можно командой: go build -o имя_выходного_файла ./cmd/имя_команды.

Standard Go Project Layout предлагает использовать такие каталоги:

Лицензия Creative Commons
Code More Team - GitHub