Могу сказать только, что нужно всеми силами стараться избегать сишных биндингов в го.
Ну и не забывать первым делом в офдоки смотреть: https://github.com/golang/go/wiki/cgo
Сам несколько раз использовал биндинги в проектах, и могу сказать, что не все так радужно. Как минимум, работает не очень-то быстро, т.к. данные постоянно копируются туда-сюда, происходит переключение рантайма. Компиляция, безусловно, медленнее (это было чуть ли не решающим фактором ухода от биндингов). Кросс-компиляции можно сказать "Пока!". Тулзы для валидации кода (линтеры и прочие плюшки) откажутся работать. Если падает сишный код, сложно сказать почему. Ну и, вполне возможно, что потянется зависимость от внешних сишных библиотек, т.е. прощаемся с единственным бинарником.
Думаю, можно продолжить список, но я для себя вывод сделал. Можно использовать иногда, например, как мы сделали тут: https://github.com/kib357/less-go
Вот тут не скажу, никогда не приходилось. Если совсем никак, и знаний плюсов не хватает, то только готовые проверенные биндинги юзать, своё писать не рекомендую, т.к. чревато течкой памяти и прочими неприятностями.
Кстати,если нужно вызвать главную функцию(точка входа в exe) и получить код возврата,то достаточно просто создать процесс и получить его код возврата по завершению.