什么是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

分类: 计算机技术
推荐阅读:
SEO基础:TKD是什么意思? TKD其实就是HTML语言中title、keywords、description的缩写;
Python dir()函数 在Python中,dir()函数是一个内置函数,用于列出指定对象的属性和方法。如果没有指定对象,则默认使用当前作用域中的所有对象。dir()函数返回一个字符串列表,包含指定对象的所有属性和方法名称。
Python将16进制HASH转换成二进制 将16进制的Hash(比如MD5、SHA1等值)转换位二进制的字符串其实很容易,只需要掌握这几个函数:
安装和更新Requests 要安装 Requests,只需要在你的终端(Windows下是CMD)运行以下命令
Rust unreachable宏的用法和示例 unreachable是Rust中的一个宏,它用于标记代码中的一个不可能被执行的分支;这个宏告诉编译器在这个分支上的代码永远不会被执行到;这对于表明某些情况下的代码不可达是很有用的。
Golang实现HTTP代理服务 这篇文章的目的是教大家如何使用Go语言实现一个简单的HTTP代理服务程序;HTTP代理服务就是转发客户端发送的网络请求到远程服务器,得到远程服务器的响应后将响应内容返回给客户端。