A common way to download Go dependencies is by using the go get <package>
command, which will save the package into the global/shared $GOPATH/src
directory. This means that a single version of each package will be linked into each project that includes it as a dependency. This also means that when a new developers deploys your project, they will go get
the latest version of each dependency.
However you can keep the build environment consistent, by attaching all the dependencies of a project into the vendor/
directory. Keeping vendored dependencies committed along with your project's repository allows you to do per-project dependency versioning, and provide a consistent environment for your build.
This is what your project's structure will look like:
$GOPATH/src/
├── github.com/username/project/
| ├── main.go
| ├── vendor/
| | ├── github.com/pkg/errors
| | ├── github.com/gorilla/mux