Understanding the Differences between go get and go mod tidy for Managing Dependencies in Go Projects

Colton
4 min readFeb 21, 2023

Go is a popular programming language that has gained significant popularity over the years due to its simplicity, reliability, and performance. As with any programming language, managing dependencies is a crucial part of developing a Go project. Two essential Go commands for managing dependencies are go get and go mod tidy. While both are used for managing dependencies, they serve different purposes.

go get

go get is a command that downloads and installs a specific Go package and its dependencies. This command is used when you need to install a new package or update an existing one to the latest version. When you run go get, it downloads the specified package and its dependencies, builds the package, and installs it in the appropriate location in your Go workspace. For example, to download and install the gin web framework, you can run the following command:

go get github.com/gin-gonic/gin

This command will download and install the latest version of the gin package and all its dependencies.

You can also use go get to download and install a specific version or tag of a package. For example, if you need to install version v1.3.0 of the gin package, you can run the following command:

go get github.com/gin-gonic/gin@v1.3.0

This command will download and install version v1.3.0 of the gin package and its dependencies.

In summary, you use go get when you need to download and install a new package or update an existing package to the latest version.

go mod tidy

go mod tidy is a command that synchronizes the go.mod file with the actual dependencies used in the codebase. This command ensures that the go.mod file contains the correct dependencies and versions used in your codebase. When you run go mod tidy, it removes any unused dependencies and adds any missing dependencies to the go.mod file. It also updates the versions of the dependencies to the latest compatible versions, as specified in the go.mod file.

For example, suppose you have a Go project that uses the gin package and its dependencies, and…

--

--

Colton

A software engineer who is always at a high level of passion with new techs and a strong willing to share with what I have learned.