Ответ
В современных версиях Go управление зависимостями осуществляется с помощью Go Modules.
Декларация: Зависимости проекта объявляются в файле
go.mod
, который находится в корне проекта. В файлеgo.sum
хранятся контрольные суммы для проверки целостности модулей.Хранение: При сборке проекта (
go build
) или выполненииgo mod tidy
Go автоматически скачивает необходимые библиотеки. Они хранятся не в папке проекта, а в глобальном кеше модулей, обычно по пути$GOPATH/pkg/mod/
.Vendoring (опционально): Существует также механизм "вендоринга". Если выполнить команду
go mod vendor
, все зависимости проекта будут скопированы в папкуvendor/
в корне проекта. При сборке с флагом-mod=vendor
Go будет использовать библиотеки из этой папки, а не из глобального кеша. Это полезно для создания полностью воспроизводимых сборок без необходимости доступа к сети.
Пример подключения драйвера PostgreSQL:
import (
"database/sql"
// Пустой импорт (_) используется, чтобы выполнить код инициализации
// драйвера, который регистрирует себя в пакете database/sql.
_ "github.com/lib/pq"
)