the one area that Go is not so good is kernels. that's it. and that's only because you can't have a realtime system with GC.
servers are not realtime. latency costs of GC are amortised very well by Go, and it is only in extreme performance like realtime video streaming (again, notice, realtime) that to use Go for this you need to side-step the GC explicitly.
even then, i suspect that tinygo would work for kernels, because kernels and embedded software share in common a tight resource limitation and requirement for efficiency.
i used a programming language years ago called Amiga E which had a lot of the basic features of Go. mainly, the dynamic arrays. dynamic arrays are a pain in the ass and really long winded syntaxes in C++/C/Rust. it's stupid, because they essentially are just fat pointers. and why nobody else except java and go use interfaces? it's far more efficient, only double indirection for dereferencing interface types, and makes it really simple to write utility libraries like database engines and GUI interfaces.