You can’t have a perfect language. Go is good enough for what is good at. Plus advanced IDE will help make the experience even better
Lack of generics made a lot of code less type-safe than it should, and just more complexity and/or duplication.
Lack of sum types made some types ugly (like mentioned IP type), and other ways of control flow harder. Rust-like Result<T> would be massive improvement to verboseness of error handling in Go for example, without really any drawbacks.