什么是Cgo

简单的说,就是自C语言出现,已经累积了无数功能强大、性能卓越的C语言代码库,可以说难以替代;在现代编程语言中,如何方便快捷的使用这些C语言库,成了它们一个必须重视的话题。

就连JAVA这个重视面向对象的语言也提供了JNI机制以调用C语言库;

所以,Go语言也支持了这一功能,就是Cgo。

来看一段Cgo的hello world:

package main
/*
#include <stdio.h>
void hello() {
 printf("Hello world !");
}
*/
import "C"

func main() {
	C.hello()
}

小伙子,看完这段代码,你是否有很多问号???

  • 这个大写的C包是什么?
  • 为什么import前面有一段C语言代码,还被写在注释里?

实际上,根本不存在一个名为C的包,这个import "C"语句其实是告诉Cgo该起床工作了;做什么呢,就是将import "C"前的那段C语言代码的注释生成包装性质的Go代码。

编译Cgo程序

编译Cgo程序非常simple,将他当成普通Go程序编译就好了;因为在构建过成中Go工具集能自动识别和处理带有Cgo代码的Go源代码文件。

原创内容,如需转载,请注明出处;

本文地址: https://www.perfcode.com/p/what-is-cgo.html

分类: 计算机技术
推荐阅读:
Python 异常处理及常见错误 一般情况下,在python无法正确处理程序时,就会发生异常;当发生异常时,我们需要捕获它并进行处理,否则程序会终止运行。
Requests详细教程 Requests 是一个功能强大、优雅而简单的 Python HTTP库;使用Requests发送网络请求整个过程将变得非常简单。
一条Linux命令让你看起来很忙还很酷 在Linux系统下,如果你想让你的终端看起来很忙,或者想在某人面前装酷,那么你一定需要这条命令来实现:
Golang实现获取指定长度的随机字符串 本文将详细的介绍Go语言中如何正确使用rand.Intn()函数作为核心,来生成指定长度的随机字符串。
Golang一次性读取文件 从磁盘读取文件内容是I/O编程的基础;几乎所有编程语言实现起来都很简单,Golang也不例外:
Python调用谷歌翻译API实现文本翻译 使用Python向谷歌翻译URL进行GET请求,得到网页内容后使用正则表达式进行解析,获得翻译结果;