borgo
wire
borgo | wire | |
---|---|---|
8 | 30 | |
3,512 | 12,485 | |
96.0% | 1.6% | |
6.7 | 2.7 | |
29 days ago | 3 months ago | |
Rust | Go | |
- | 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.
borgo
-
100 Exercises to Learn Rust
> Other than safety and the like.
I think these are some good points:
https://github.blog/2023-08-30-why-rust-is-the-most-admired-...
On the one hand, "safety" avoids the "use after free" or other bugs which plague programs written in C. For systems programming, that is significant.
On the other hand, the "safety" allows for much easier concurrency.
The higher-level stuff like "pattern matching" is really nice. It's nice enough that it motivated efforts like https://github.com/borgo-lang/borgo
Somewhat implicit is that Rust has enough of a community that there are many good packages/libraries and tools around it.
- A new programming language that compiles to Go
- Borgo is a programming language that compiles to Go
-
Borgo is a statically typed language that compiles to Go
See the example with the `?` operator: https://github.com/borgo-lang/borgo?tab=readme-ov-file#error...
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?
gleam - ⭐️ A friendly language for building type-safe, scalable systems!
fx - A dependency injection based application framework for Go.
ClosedTypeHierarchyDiagnosticSuppressor - Suppresses exhaustiveness warnings for switching (switch statement or expression) on closed type hierarchies
dig - A reflection based dependency injection toolkit for Go.
rescript-compiler - The compiler for ReScript.
gomock - GoMock is a mocking framework for the Go programming language.
grumpy - Grumpy is a Python to Go source code transcompiler and runtime.
do - ⚙️ A dependency injection toolkit based on Go 1.18+ Generics.
have - The Have Programming Language
container - A lightweight yet powerful IoC dependency injection container for the Go programming language
bflat - C# as you know it but with Go-inspired tooling (small, selfcontained, and native executables)
goioc/di - Simple and yet powerful Dependency Injection for Go