Skip to content

Latest commit

 

History

History
 
 

orders_management_system

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Урок 6

Директории Go

/cmd

Основные приложения для текущего проекта.

Имя директории для каждого приложения должно совпадать с именем исполняемого файла, который вы хотите собрать (например, /cmd/myapp).

Не стоит располагать в этой директории большие объёмы кода. Если вы предполагаете дальнейшее использование кода в других проектах, вам стоит хранить его в директории /pkg в корне проекта. Если же код не должен быть переиспользован где-то еще - ему самое место в директории /internal в корне проекта.

Самой распространённой практикой является использование маленькой main функции, которая импортирует и вызывает весь необходимый код из директорий /internal и /pkg, но не из других.

Примеры:

/internal

Внутренний код приложения и библиотек. Это код, который не должен использоваться в других приложениях и библиотеках. Стоит отметить, что этот шаблон применяется самим компилятором Golang. Также, вы вольны использовать более одной директории internal на разных уровнях структуры своего проекта.

Вы можете добавить дополнительное структурирование, чтобы разделить открытую и закрытую части вашего внутреннего кода. Такой подход не является обязательным (особенно для маленьких проектов), но позволяет сразу визуально оценить область применение кода. Код самого приложения может находиться в директории /internal/app (например, /internal/app/myservice).

/pkg

Код библиотек, пригодных для использования в сторонних приложениях (например, /pkg/mypubliclib). Другие проекты будут импортировать эти библиотеки, ожидая их автономной работы, поэтому стоит подумать дважды, прежде чем класть сюда какой-нибудь код. Обратите внимание, что использование директории internal - более оптимальный способ гарантировать что ваши внутренние пакеты, не будут импортированы, потому что это обеспечивает сам Go. Директория /pkg - всё еще хороший путь дать понять, что код в этой директории могут безопасно использовать другие.

Директории приложений-сервисов

/api

Спецификации OpenAPI/Swagger, JSON schema файлы, файлы определения протоколов.

Полезные материалы

Форматирование и стилизация кода

Стандартный макет Go проекта

Наименование и организация пакетов и структуру кода

Чистая архитектура

Go Style Guides