If you're using Go and need to optimize to get rid of allocations. Why are you using go?
Just because you're using a GC'd language doesn't mean that you should give no thought whatsoever to the garbage your program is generating.
Maybe the allocations are more obvious, because you usually have to write them out yourself (heap-allocating RAII containers excepted), but the problem is the same.
a) rewriting in C++
b) pooling some objects
Which one is the right call?
Garbage collected memory allocations would be the subset of allocations for which the compiler was unable, through escape analysis or otherwise, prove that an allocation's lifetime extends past (for example) its lexical scope, in which case the analog of C auto allocation would suffice.