← ClaudeAtlas

go-expertlisted

Go gotchas and decision criteria. Covers error handling patterns, concurrency pitfalls, and interface design.
nguyenthienthanh/aura-frog · ★ 19 · AI & Automation · score 79
Install: claude install-skill nguyenthienthanh/aura-frog
> **AI-consumed reference.** Optimized for Claude to read during execution. > Human-readable explanation: see [docs/architecture/HIERARCHICAL_PLANNING.md](../../../docs/architecture/HIERARCHICAL_PLANNING.md) > or [docs/getting-started/](../../../docs/getting-started/) depending on topic. # Go Expert — Gotchas & Decisions Use Context7 for Go framework docs. ## Key Decisions ```toon decisions[4]{choice,use_when}: Gin vs Echo vs Fiber,"Gin: most popular/stable. Echo: cleaner API. Fiber: highest perf (Express-like)" Interface location,"Define in CONSUMER package not provider. Accept interfaces return structs" Channel vs Mutex,"Channel for communication between goroutines. Mutex for protecting shared memory" Table-driven vs subtests,"Table-driven for input variations. Subtests (t.Run) for distinct scenarios" ``` ## Gotchas - `err != nil` check EVERY error return — never ignore with `_` - `%w` for wrapping errors (unwrappable), `%v` for formatting only (not unwrappable) - Goroutine leak: always ensure goroutines can exit (context cancellation, done channels) - `defer` evaluates args immediately but executes LIFO — `defer f.Close()` captures current `f` - Range loop variable reuse (pre-Go 1.22): `for _, v := range items { go func() { use(v) }() }` captures same `v`. Fixed in Go 1.22+ - `nil` slice vs empty slice: `var s []int` (nil, marshals to `null`) vs `s := []int{}` (empty, marshals to `[]`) - `context.Background()` for top-level, `context.TODO()` as placeholder.