Go – Design Patterns (GO5)
Programming, Rust
If you already know Go and want to explore software design, this course explains how Go relies on interfaces and interface-based polymorphism rather than class inheritance. You will practice idiomatic patterns and learn when to favor composition for cleaner code.
This hands-on workshop focuses on composition, small interfaces and practical refactorings to keep systems tidy. Expect live examples, group reviews, and guidance on project layout, dependency management, testability and runtime resilience. Bring your code.
Location, current course term
Contact us
The course:
Hide detail
-
Design principles in Go
-
Composition over inheritance, small interfaces, clear boundaries
-
Functions as values; the options pattern and Functional Options
-
Object creation (creational)
-
Factory and constructor functions; Functional Options
-
Builders (idiomatic Go alternatives); singleton with safe init
-
Structural patterns
-
Adapter (wrappers around io.Reader/io.Writer), Decorator (middleware, logging)
-
Proxy (caching, lazy init), Facade (layers over subsystems), Bridge (separate interface/implementation)
-
Behavioral patterns
-
Strategy (swap implementations via interfaces)
-
Command (operations as values), Template Method (embedding + hooks)
-
Observer (channels / event bus), Iterator (idiomatic Next/Err/Close)
-
Architectural principles
-
Clean project layout in Go: cmd/, internal/, packages and dependencies
-
DI without frameworks, contracts via interfaces, improving testability
-
Testing, observability and resilience
-
Table-driven tests, mocks/stubs vs fakes, golden files
-
Circuit-breaker, rate limiting, timeouts, retries with backoff
-
Assumed knowledge:
-
Familiarity with programming in Go.
-
Recommended previous course:
-
Go – parallel programming (GO4)
-
Schedule:
-
3 days (9:00 AM - 5:00 PM )
-
Language:
-