It does not actually provide memory safety in concurrent scenarios, only for purely sequential code. Given the predicted use-case scenarios for Go, that's pretty much a truck-sized hole in the language's purported guarantees, especially in comparison with Rust.
It has a runtime with a GC. It's capable of safety, but not the low level performance/predictability of the Rust approach, and is also harder to embed than a Rust approach.
This is not a disqualifer for most use cases, but is for some.
System level programming memory safety was a dream for a long time.
Go is not capable of this at all, so it's out of question for replacing low level libraries.