Unused variables have nothing to do with memory safety. At most they'll take up some stack or heap space.
https://en.wikipedia.org/wiki/Memory_safety
Memory safety is enforced in Go via best practices–like C and C++ ecosystems. However because of gc and channels race conditions happen less often in Go but there's no explicitly tooling to prevent them from happening: