Go has developed three different types of package management through its history so far.
- Go Modules
go mod is the best of all in 2021. Most of the go packages are migrating to
go mod now.
- Default folder is
- GOPATH is an environment, all the packages will be stored in this environment
- As we add more and more packages, GOPATH will become increasingly big. Imagine all codes in one repo.
- GOPATH requires a
srcsub-folder under GOPATH folder
Because all packages are placed in the same GOPATH, there might be version conflicts as well.
- Each project has its own
vendordirectory to store 3rd party packages
- However, this method requires many 3rd party dependency tools, e.g. glide, dep, go dep, etc.
- It adds more complexity and patches to the project
Go Module has become the de facto standard for package management. Most of the go packages are moving to the go modules.