Comment Comment by camdencheek Definitely possible! However, I prefer to avoid cgo wherever possible for more than just the overhead.In my experience:- It complicates builds by requiring a C toolchain- It makes single, static binaries more difficult- It makes portability more difficult (not that assembly is portable though)- It causes difficult-to-debug issues (I recently ran into an issue where MacOS signing changed, causing all my cgo binaries to be killed on startup)- Debuggers don't work across Cgo boundaries (they do with go ASM!)I think Dave Cheney said it best: https://dave.cheney.net/2016/01/18/cgo-is-not-go parent camdencheek 2 years ago
In my experience:
- It complicates builds by requiring a C toolchain
- It makes single, static binaries more difficult
- It makes portability more difficult (not that assembly is portable though)
- It causes difficult-to-debug issues (I recently ran into an issue where MacOS signing changed, causing all my cgo binaries to be killed on startup)
- Debuggers don't work across Cgo boundaries (they do with go ASM!)
I think Dave Cheney said it best: https://dave.cheney.net/2016/01/18/cgo-is-not-go