That said, there are some high level ergonomic features to the language that make it seem much more high level than it is.
Still, if you're looking for a language with greenthreads and a GC, Rust is not that.
That said, coming from Python, I sometimes miss its expressiveness. But when I switch back to Python, I miss Go "straightforwardness".
Use Go for small to medium server side systems. A lot of the issues mentioned by OP are related to scaling (in terms of codebase) stresses that Go is ill equipped to address. In the small scale, Go works like a charm.
Use Go for large server side systems that compose via IPC (of whatever flavor). Lots of processes mean lots of small scale Go applications (so see above).
Strongly consider Go for server side systems where 'Green Thread/Fiber/lighweight threading' is an architectural requirements. Also consider Erlang/Elixir and possibly Node. If IPC composition is also a match (see above) then Go is a serious consideration.
You want a compiler in loop writing (relatively) portable cmdline tools. Go is a serious candidate here as well.
I suspect a subset of the Go angst is due to philosophizing about a language that proudly wears an anti-intellectual badge on its cute furry coat. Stop doing that, accept it for what it is, and sure enough it is very useful and capable in its own niche.
Python perl php ruby are interpreted so despite best efforts by their conmunities they simply aren't as fast ( though their libraries are nice) and often fast enough.
Go seems to straddle the space between the Lower and higher levels. Kinda like Java if it compiled to native. The one language that I see in the same space that is evolving fast is swift.