Golang Cgo是什么


本文摘自php中文网,作者(*-*)浩,侵删。

CGO 提供了 golang 和 C 语言相互调用的机制。某些第三方库可能只有 C/C++ 的实现,完全用纯 golang 的实现可能工程浩大,这时候 CGO 就派上用场了。 (推荐学习:go)

可以通 CGO 在 golang 在调用 C 的接口,C++ 的接口可以用 C 包装一下提供给 golang 调用。

被调用的 C 代码可以直接以源代码形式提供或者打包静态库或动态库在编译时链接。推荐使用静态库的方式,这样方便代码隔离,编译的二进制也没有动态库依赖方便发布也符合 golang 的哲学。

CGO 的具体使用教程本文就不涉及了,这里主要介绍下一些细节避免使用 CGO 的时候踩坑。

参数传递

基本数值类型

golang 的基本数值类型内存模型和 C 语言一样,就是连续的几个字节(1 / 2 / 4 / 8 字节)。

因此传递数值类型时可以直接将 golang 的基本数值类型转换成对应的 CGO 类型然后传递给 C 函数调用,反之亦然:

阅读剩余部分

相关阅读 >>

go 大数据生态迎来重要产品 cds

怎么安装godoc

golang不支持泛型吗?

手撸golang 仿spring ioc/aop 之10 增强1

【go】go语言资料包

清晰架构(clean architecture)的go微服务: 程序设计

关于go sql中的query、exec和prepare使用对比(附网络抓包)

golang双向链表

go dumpling! 让导出数据更稳定

go mod特定依赖包处理

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...