There is no best practice on how to structure a Go code base.
go.dev is still ugly. It is ok in comparison to the old Win95-styled design.
That awful closure fib example on go.dev is still a good reason to ignore Go. I would guess most of all devs don't understand it when they read it the first time.
Fuzzing in general is an anti-pattern but can be useful.
I struggled with examples of codebase structure when I was learning the language. I looked into code written by Go contributors, and it struck me as “procedural.”
This is where a significant shift in my programming started: abandoning OOP, removing unnecessary dependencies, moving from Linux to OpenBSD, from k8s to VM, and from clouds to bare metal. Pros: I understand computers better and have more fun. Cons: companies are still at the stage of moving to a cloud. And now I have to wait for trends to catch up.
C was the lang I first really learned. You can look at opensource projs and they are all very different. C# solutions for instance are so generic it is almost boring.
There is no best practice on how to structure a Go code base.
go.dev is still ugly. It is ok in comparison to the old Win95-styled design.
That awful closure fib example on go.dev is still a good reason to ignore Go. I would guess most of all devs don't understand it when they read it the first time.
Fuzzing in general is an anti-pattern but can be useful.