A lightweight yet powerful IoC dependency injection container for Go projects with singleton/transient bindings and named dependencies.
GoLobby Container is a dependency injection container for Go that facilitates Inversion of Control by binding abstractions to concrete implementations. It helps decouple code dependencies, making applications more modular, testable, and maintainable.
Go developers building medium to large applications who need a structured way to manage dependencies and reduce coupling between components.
It offers a lightweight, performant, and feature-rich alternative to manual dependency management, with support for singleton/transient bindings, named dependencies, and multiple resolution strategies without heavy framework overhead.
A lightweight yet powerful IoC dependency injection container for the Go programming language
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports both singleton and transient bindings, plus named dependencies for multiple implementations of the same interface, as shown in the README's examples for typed and named bindings.
Offers Resolve(), Call(), and Fill() methods for resolving dependencies via references, closures, or struct injection, enabling diverse use cases like struct field tagging.
Emphasizes minimal reflection overhead and encourages binding in init functions for performance, with lazy loading options to defer execution until first use.
Allows creating isolated container instances alongside the global default, providing modularity for different application parts without shared state.
The README admits that reflection is used for binding and resolving, which can impact performance and requires careful placement (e.g., in init functions) to mitigate startup delays.
Lacks built-in support for dependency scopes (like request-scoped), automatic wiring, or integration with popular Go web frameworks, making it less suitable for complex enterprise needs.
While Must helpers simplify error handling with panics, the standard error-returning methods can lead to verbose code, and the README doesn't address recovery strategies for panics in production.