SECURITY WARNING: Never run commands you don't understand. Always review code before execution. Use at your own risk.
Go 19 errors

Go Errors

Nil map assignment, concurrent map access, context cancellation and deadlocks.

Understanding Go errors

Go's runtime is unusually good at telling you what went wrong. concurrent map writes and all goroutines are asleep - deadlock! are precise diagnoses rather than vague crashes. The recurring themes are nil zero values that need explicit initialisation (maps, channels, pointers inside interfaces), unsynchronised shared state, and contexts that are cancelled upstream.

How to debug Go errors

  1. Run tests and, where possible, production builds under the race detector: go test -race ./.... It finds data races that are invisible under normal execution.
  2. Read the full panic output. Go prints every goroutine's stack, and the one that matters is usually not the first.
  3. For context canceled, walk up the call chain to find who cancelled: a client disconnect, a timeout, or a parent context that went out of scope are the three sources.
  4. Distinguish a nil interface from an interface holding a nil pointer. var p *T = nil; var i I = p makes i != nil, which is the cause of most "interface conversion: interface is nil" surprises.
  5. Use go tool pprof and runtime.NumGoroutine() to find goroutine leaks. A count that only ever grows means something is never returning.

Tools worth reaching for

  • go test -race
  • go vet
  • go tool pprof
  • GODEBUG=gctrace=1
  • delve (dlv)

All 19 Go errors

Other categories