A curated collection of idiomatic design patterns, recipes, and idioms for the Go programming language.
tmrts/go-patterns is a curated collection of design patterns, concurrency models, stability techniques, and idioms specifically for the Go programming language. It provides clear, idiomatic implementations to help developers write more maintainable, scalable, and resilient Go code by applying proven software engineering principles.
Go developers at all levels, from those learning idiomatic Go practices to experienced engineers building concurrent, distributed, or high-stability systems.
Developers choose this over generic pattern references because it offers Go-specific implementations and explanations, emphasizing concurrency-first design and practical examples that align with Go's philosophy of simplicity.
Curated list of Go design patterns, recipes and idioms
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Includes idiomatic implementations like Bounded Parallelism and Generators, detailed in the concurrency section with working code examples (marked ✔ in the README).
Covers resilience patterns such as Circuit-Breaker with Go examples, helping build fault-tolerant systems as noted in the stability patterns section.
Encompasses categories from creational to messaging patterns, providing a comprehensive reference for various software engineering needs in Go.
Emphasizes Go's philosophy of simplicity, with patterns like Functional Options included to demonstrate clean API design.
Many patterns are marked with ✘ in the README tables, indicating missing or unfinished content, such as Abstract Factory and Bridge, limiting immediate usability.
It's a collection of documentation and code snippets, not an installable library, so developers must manually adapt examples rather than importing ready-to-use packages.
The project shows limited recent activity, with many patterns unimplemented, risking outdated information or lack of support for newer Go versions.