go语言中的Cgo是什么

CGO用于在GO代码中使用C语言编程,或者说是调用C代码封装的链接库文件中编写的函数,有些想用的东西GOLANG没有官方源码,但是C语言有时,就可以用CGO调用它,比如喜闻乐见的OpenCV。

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站建设、托里网络推广、微信平台小程序开发、托里网络营销、托里企业策划、托里品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供托里建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

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

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

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

参数传递

基本数值类型

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

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

package main

/*
#include 

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是什么的详细内容,更多请关注创新互联其它相关文章!


当前题目:go语言中的Cgo是什么
标题路径:http://myzitong.com/article/jecsio.html