什么是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 hex()函数 在Python中,hex()是一个内置函数,用于将整数转换为十六进制字符串。其语法如下:
C语言计算卡特兰数(catanlan number) 卡特兰数(Catalan number),是组合数学中一种常出现于各种计数问题中的数列;本文使用C语言来计算卡特兰数;
为什么MD5说是128位,却只有32个字符? 为什么MD5说是128位,却只有32个字符?这是因为这两个长度的概念不同;
Linux将上一条执行的命令写入文件 在Linux下,你可以将刚刚输入的最后一条命令写入文件里,而且只需要一条命令,免去了创建文件,重复输入的过程;
Kali国内源 Kali是一个开源的、基于Debian的Linux发行版,旨在进行高级渗透测试和安全审计;Kali 包含数百个针对各种信息安全任务的工具,例如渗透测试、安全研究、计算机取证和逆向工程。
PySide6 setStyle()函数详细教程 Pyside6.QtWidgets.QApplication类的成员函数setStyle()用于设置程序的GUI样式;