In this post, we will walk through the steps required to set up a minimal Golang development environment on a new macOS machine. This includes installing Go, configuring environment variables and creating a simple Hello, World! program.
Table of Contents
🧠 Mental Model: “From Zero to Go”
Think of this like building a minimal Go ecosystem:
-
System setup (Tooling prerequisites)
-
Install Go (Language/runtime)
-
Environment wiring (PATH, GOPATH, etc.)
-
Hello World creation (Write, build, run)
✅ Step-by-Step Breakdown
1. 💻 Prerequisites
Make sure your Mac has Command Line Tools installed:
xcode-select --install
Required for basic tools like git and make
2. ⬇️ Install Go
Option 1: Use official Go installer Download macOS pkg from: https://go.dev/dl/
It installs to /usr/local/go by default.
Option 2: Use Homebrew
brew install go
This installs Go and sets it up under /opt/homebrew/ (for Apple Silicon) or /usr/local/ (for Intel).
3. 🧭 Set Up Environment Variables
Open (or create) your shell config file (~/.zshrc for zsh or ~/.bash_profile for bash):
# Go binary location
export PATH=$PATH:/usr/local/go/bin
# Workspace (optional but common)
export GOPATH=$HOME/go
# Ensure Go binaries installed via `go install` are accessible
export PATH=$PATH:$GOPATH/bin
Then reload:
source ~/.zshrc # or source ~/.bash_profile
🔑 Global Environment Variables
| Variable | Purpose | Example |
|---|---|---|
| PATH | Must include /usr/local/go/bin | /usr/local/go/bin |
| GOPATH | Workspace directory for Go projects | /Users/yourname/go |
| GOROOT | (Optional) Root of Go install (auto) | /usr/local/go |
| GOBIN | (Optional) Where Go installs binaries | $GOPATH/bin |
⚠️ GOPATH is less important with Go modules (modern Go projects), but it’s still relevant for some tooling.
4. 👋 Write Your First Program
mkdir -p ~/go/hello
cd ~/go/hello
Create hello-world.go:
package main
import "fmt"
func main() {
fmt.Println("Hello, world!")
}
5. ▶️ Run It
You can compile and run:
go run hello-world.go
Or build:
go build hello-world.go
./hello-world
🧠 Optional: Go Modules (Modern Approach)
If you’re using Go 1.13+ (which you should), you can use modules instead of GOPATH:
go mod init hello
go run .
No need to worry about GOPATH layouts as much.
🧪 Verify Setup
Check versions and paths:
go version
go env
This will show:
GOROOT (should be where Go is installed)
GOPATH (if set)
GO111MODULE (usually set to on)