# Introduction to Go workspaces

> An introduction to the Go workspace and GOPATH, the $HOME/go home base where Go installs the packages and tooling your projects depend on.

Author: Flavio Copes | Published: 2022-09-09 | Canonical: https://flaviocopes.com/golang-workspaces/

One special thing about Go is what we call **workspace**.

The workspace is the “home base” for Go.

By default Go picks the `$HOME/go` path, so you will see a `go` folder in your home.

It’s first created when you install a package (as we’ll see later) but also to store some tooling. For example the moment I loaded the `hello.go` file in [VS Code](https://flaviocopes.com/vscode), it prompted me to install the `[gopls](https://pkg.go.dev/golang.org/x/tools/gopls)` command, the Delve debugger (`dlv`) and the `[staticcheck` linter](https://staticcheck.io/).

They were automatically installed under `$HOME/go`:

![Screen Shot 2022-07-28 at 12.27.27.png](https://flaviocopes.com/images/golang-workspaces/Screen_Shot_2022-07-28_at_12.27.27.png)

When you will install packages using `go install`, they will be stored here.

This is what we call **GOPATH**.

You can change the `GOPATH` environment variable to change where Go should install packages.

This is useful when working on different projects at the same time and you want to isolate the libraries you use.
