I agree with the previous comment, switching the language won't help you with the situation in general. It's absolutely natural situation when your codebase becomes bad as the project evolves, especially when you just start it. The solution to that is to grab all the knowledge and understanding of the system and just rewrite it from scratch redesigning things according to a fresh model. I'm doing RnD professionally for more than 10 years and anyway I need 4-5 iterations of nearly full rewrite to achieve fine result, and 2-3 times more to get something near the optimal solution. This is just natural process.
For sure C adds some complexity by memory management, but it also disciplines you and even suggests how to organize your code. The pattern to free the resource in the same place you acquired it is a very good and useful. It not only applies to memory, but also to opening files, network connections, mutexes, and many other things. If Go save you (with a cost) from freeing memory, it won't save you from eve