I feel like many developers completely misses the point(s) of Go. It is not perfect, but it has a few nice properties:
* Simple use of concurrency is simple to use, easy to get right and very useful. Like WaitGroups.
* Go was written partly to solve the issues that Google had with C++. Dependency trees that grew too large too quickly was one of these issues. It may be annoying tha Go disallows unused imports, but it helps to keep the dependencies under control.
* Go is a simple language with fewer keywords than C. It is easy to parse and the build times are excellent, even for larger projects. Short build times is not only nice to have, but it changes how developers iterate and work with code, in a good way.
* Arena allocators can be used, and the (unusually efficient and fast) garbage collector can be paused. Unwanted garbage collection can be avoided.
* The tooling is excellent: cross compilation, profiling, tracing, testing, code formatti g, benchmarking, dependency managment and even fuzzing are all built in and available by default.
* The Go, GCCGO and TinyGo compilers are available. GCCGO can produce smaller executables and TinyGo targets embedded systems.
* You can (mostly) read source code just by looking at a single source file at a time. Errors are handled at the spot or returned, not catched elsewhere. Interfaces are used sparingly. There are structs instead of classes and they are not inherited.
* The main question in Java is "what IS it really?" while in Go it is "what does it really DO?". This is often a worse question for simulators, but a better question for getting things done.
* Rust is correct and nice, but may provide friction while programming, because it is strict. Go provides more friction than Python, but less than Rust, because it is less strict. For better and for worse. For anyone that think Rust is too strict compared to the benefits that Rust gives, Go may be a better choice.
* Go is a goos fit for servers. Look at the most starred Go projects on GitHub.
* Go has minimalistic origins.
I really like Go. I just wish it had an "in" keyword like Python does, and the ability to mark regions of code to have Rust-like strictness.