Не очень понимаю как работает go get packagename. Пришёл из node.js, насколько я понимаю это аналогия npm?
Хотелось бы сохранять зависимости проекта локально с проектом, а не глобально, чтобы проект А не отлетал при обновлении версии пакета для проекта Б. Если указываю GOPATH=project_directory при go get packagename получаю ошибка вида "в папке найден go.mod, а его быть не должно".
Как в итоге сохранять зависимости локально в папке проекта, и куда сохраняются пакеты, если не указана переменная GOPATH?
От переменной GOPATH в Go Modules проекте ничего не зависит, все зависимости сохраняются в так называемый кэш модулей (go env – GOMODCACHE). По умолчанию после установки эта переменная смотрит на /Users/user.name/go/pkg/mod.
Для использования зависимостей вместе проектом рассмотрите vendoring (go mod vendor).