The GOPATH is an environment variable in Go that defines the root directory of your workspace, where your Go code, dependencies, and compiled binaries are stored — but it’s mostly relevant for older versions of Go (pre-1.11) or projects not using Go Modules.
GOPATH Used For?Traditionally, GOPATH is used to organize and locate:
| Subdirectory | Purpose |
|---|---|
src/ |
Source code files (organized by import path, e.g., github.com/user/app) |
pkg/ |
Compiled package objects (.a files) for reuse |
bin/ |
Compiled executable binaries |
For example, if your GOPATH is set to /home/user/go, a project might be located at:
/home/user/go/
├── src/github.com/maelton/myapp/
├── pkg/
└── bin/
Starting with Go 1.11, the Go Modules system (go.mod) was introduced and became the default in Go 1.16. This allows you to:
GOPATH directory.go.mod and go.sum.GOPATH?$GOPATH/bin.GOPATH.GOPATH