go-maquina
wire
go-maquina | wire | |
---|---|---|
3 | 30 | |
49 | 12,368 | |
- | 1.6% | |
0.0 | 2.7 | |
9 months ago | 2 months ago | |
Go | Go | |
MIT License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
go-maquina
-
Now that Golang has generic types, how do you plan to use them?
https://github.com/soypat/go-maquina finite state machine which takes user callbacks with a generically defined input argument to the callback. See fringeFunc[T]
-
go-maquina: Finite-State Machine package in 300 loc
From https://github.com/soypat/go-maquina/blob/main/statemachine.go
wire
-
Borgo is a statically typed language that compiles to Go
code generation is a mostly disjoint topic from DI. Granted, some solutions like https://github.com/google/wire use code generation, but you're exactly right about their pitfalls. If your dev environment doesn't have good support for generated code, it is a nightmare. If you can goto-definition the generated code, then it is suddenly feasible, but perhaps still a bad choice.
- Injeção de dependência em Go
-
Question about dependency initialization
We use https://github.com/google/wire for every bigger project, take a look at it, it beautifully solves initialisation and also gives you a guideline on how to do it.
-
As a Go programmer, what design pattern, programming techniques have you actually used, implemented regularly in your workplace which made your life much easier?
Im by no means a "purist" in such things, I love my magic and QoL-features/libs, but havent seen something that is so easy to use in go, that I immediately wanted to add it. And to be fair, I only looked closely at https://github.com/google/wire , others I have just skipped - and I will be looking into uber-fx as mentioned in the other comment.
-
Config for production and mocking (db connections, http parsers etc)
If you have such a complex and deep dependency graph, and you don't want to manually maintain it, you could use some DI library to handle that for you. Something like https://github.com/google/wire for small-medium size stuff, or https://github.com/uber-go/fx for larger scale, more enterprise projects.
- Is it just me or does nobody really know what idiomatic Go is.
-
What's the best dependency injection framework / methodology for Golang for the enterprise?
Try https://github.com/google/wire. Compile time generated like dagger 2 in java.
-
Modern API design with Golang, PostgreSQL and Docker.
Most people probably do it by hand (I do). But otherwise, probably https://github.com/google/wire is the most popular, maybe followed by https://github.com/uber-go/fx.
-
Google's internal Go style guide
For larger object graphs do you roll everything by hand or encourage something like https://github.com/google/wire
-
godi a New Dependency Injection library - feedback welcome
The other thing is that I'm lazy, so I don't construct all dependencies in main.go manually but use wire to generate the construction of my dependency tree.
What are some alternatives?
surf - CLI Text Search across your infrastructure platforms, Universal Ctrl+F for infra
fx - A dependency injection based application framework for Go.
stream - Stream API for Go.
dig - A reflection based dependency injection toolkit for Go.
generic-client
gomock - GoMock is a mocking framework for the Go programming language.
statetrooper - StateTrooper is a Go package that provides a finite state machine (FSM) for managing states. It allows you to define and enforce state transitions based on predefined rules.
do - ⚙️ A dependency injection toolkit based on Go 1.18+ Generics.
peasocket - little websocket implementation
container - A lightweight yet powerful IoC dependency injection container for the Go programming language
goioc/di - Simple and yet powerful Dependency Injection for Go
wild-workouts-go-ddd-example - Go DDD example application. Complete project to show how to apply DDD, Clean Architecture, and CQRS by practical refactoring.