Go Design Patterns
A curated collection of 56 idiomatic design & application patterns for the Go programming language — actively maintained and 100% implemented.
📦
56 Patterns
📂
10 Categories
✅
100% Implemented
🏗️
Creational
Object creation mechanisms — factories, builders, singletons, pools, and generics.
7 patterns
🧱
Structural
Compose objects into larger structures — bridges, proxies, decorators, and facades.
6 patterns
🎭
Behavioral
Manage algorithms and object responsibilities — commands, observers, and strategies.
10 patterns
🔒
Synchronization
Coordinate concurrent access — mutexes, semaphores, monitors, and condition variables.
5 patterns
⚡
Concurrency
Harness goroutines and channels — errgroups, pipelines, worker pools, and rate limiters.
12 patterns
📨
Messaging
Move data between components — fan-in/out, pub/sub, futures, and push/pull.
5 patterns
🛡️
Stability
Build resilient systems — circuit breakers, bulkheads, deadlines, and fail-fast.
6 patterns
📊
Profiling
Measure and optimize performance with timing functions and profiling wrappers.
1 pattern
🔧
Idioms
Go-specific idioms — functional options, context propagation, error wrapping, DI, and table-driven tests.
5 patterns
⚠️
Anti-Patterns
Common pitfalls — cascading failures and patterns to avoid in production systems.
1 pattern