2.12. 补充说明

为何要话费巨大的精力学习CGO是一个问题。任何技术和语言都有它自身的优点和不足,Go语言不是银弹,它无法解决全部问题。而通过CGO可以继承C/C将近半个世纪的软件遗产,通过CGO可以用Go给其它系统写C接口的共享库,通过CGO技术可以让Go语言编写的代码可以很好地融入现有的软件生态——而现在的软件正式建立在C/C语言之上的。因此说CGO是一个保底的后备技术,它是Go的一个重量级的替补技术,值得任何一个严肃的Go语言开发人员学习。

本章讨论了CGO的一些常见用法,并给出相关的例子。关于CGO有几点补充:如果有纯Go的解决方法就不要使用CGO;CGO中涉及的C和C构建问题非常繁琐;CGO有一定的限制无法实现解决全部的问题;不要试图越过CGO的一些限制。而且CGO只是一种官方提供并推荐的Go语言和C/C交互的方法。如果是使用的gccgo的版本,可以通过gccgo的方式实现Go和C/C的交互。同时SWIG也是一种选择,并对C诸多特性提供了支持。


书籍推荐