Hacker News .hnnew | past | comments | ask | show | jobs | submitlogin

cgo is easy to use but pretty literally opts you into a different language entirely: https://dave.cheney.net/2016/01/18/cgo-is-not-go


In addition, cgo calls are often reeely slow. I've been using the sqlite bindings to go for projects recently. sqlite doesn't allow you to write your own in-language functions, but instead allows you to write your own callback. I recently did some benchmarks, and the golang callback for a simple function was 20x slower than implementing it in C (1600us vs 80us), presumably due to all the marshaling and reflection required.


Yes, you really don't want to use cgo to call small functions or helpers, the overhead is enormous.


Yeah pretty much.

Using cgo has been the source of near endless pain for me when writing systems software. It criples portability, drastically changes runtime behaviours and generally is best dealt with by CGO_ENABLED=0.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: