This isn't simpler at all. Managing CGo is many times more difficult than a little optimizing. If you're able to write the hot path more performantly in C or similar, then you're perfectly capable of optimizing the Go version--the principles are the same and you don't need to incur the costs of crossing the CGo boundary nor do you need to reason about the memory/ownership handoff between languages or any of the other half dozen downsides of CGo.