• 技术文章 >后端开发 >Golang

    Golang Cgo是什么

    (*-*)浩(*-*)浩2019-12-03 09:20:03原创1766

    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 函数调用,反之亦然:

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

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:Golang
    上一篇:golang cap是什么意思 下一篇:golang channel是什么
    线上培训班

    相关文章推荐

    • Golang+Nodejs的前后端开发分离详解• 使用Golang实现PHP的Addslashes和Stripslashes• 如何从PHP过渡到golang• golang会取代php吗• GoLang中协程图文详解

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网