脚本宝典收集整理的这篇文章主要介绍了Golang Cgo是什么,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
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 @R_512_2469@,反之亦然:
package main /* #include <stdint.h> static int32_t add(int32_t a, int32_t b) { return a + b; } */ import "C" import "fmt" func main() { VAR a, b int32 = 1, 2 var c int32 = int32(C.add(C.int32_t(a), C.int32_t(b))) fmt.PRintln(c) // 3 }
以上就是Golang Cgo是什么的详细内容,更多请关注脚本宝典其它相关文章!
以上是脚本宝典为你收集整理的Golang Cgo是什么全部内容,希望文章能够帮你解决Golang Cgo是什么所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。