Go Toolchain
Common commands for Go projects.
Build & run
go build ./...
go run .
go run cmd/server/main.go
Testing
go test ./...
go test -v ./...
go test -race ./...
go test -cover ./...
go test -coverprofile=coverage.out ./... && go tool cover -html=coverage.out -o coverage.html
go test ./pkg/api/ -run TestLogin -v
Benchmarks
go test -bench=. -benchmem ./...
Linting
# golangci-lint (recommended)
golangci-lint run ./...
# Built-in
go vet ./...
Formatting
gofmt -w .
goimports -w .
Module management
go mod init mymodule
go mod tidy
go mod download
go get github.com/pkg/errors@latest
go list -m all # List all dependencies
go list -m -u all # Check for updates
Build for different platforms
GOOS=linux GOARCH=amd64 go build -o bin/app-linux ./cmd/server
GOOS=darwin GOARCH=arm64 go build -o bin/app-darwin ./cmd/server
Debugging
# Delve debugger
dlv debug ./cmd/server
dlv test ./pkg/api/
Generate
go generate ./...
Notes
- Go projects use
go.modfor module definition and dependency management. - Use
./...to target all packages recursively. go vetcatches common mistakes;golangci-lintis more comprehensive.