Can you explain more about why you re-wrote?
You seem to have said you rewrote from Go because it has poor polymorphism, into C which is equally bad in this regard.
If you find some language feature important, surely you would not rewrite into a language that doesn't have that feature?