关于cgo的简单使用

准备工作
在使用cgo特性之前,需要安装C/C++构建工具链,在macOS和Linux下是要安装gcc,在windows下是需要安装MinGW工具。
基于C标准库函数

package main
/*#include <stdlib.h>*/
import "C"import (
	"fmt"
	"time")func main() {
	C.srandom(C.uint(time.Now().UTC().UnixNano()))
	for i := 0; i < 10; i++ {
		fmt.Printf("%d ", int(C.random()))
	}
	fmt.Println()}

代码通过import "C"语句启用cgo特性,go build命令会在编译和链接阶段启动gcc编译器。

使用自己的C函数

package main
/*#include <stdio.h>static 
void SayHello(const char* s) {    
	puts(s);
}
*/
import "C"
func main() {
C.SayHello(C.CString("Hello, World"))
	}

也可以将SayHello函数放到当前目录下的一个C语言源文件中(后缀名必须是.c)。

package main
//void SayHello(const char* s);
import "C"
func main() {
D.SayHello(C.CString("Hello, World"))
}

值得一提的是cgo的原理是调用本地的c代码,如果是需要将go代码运行在虚拟机的情况,则cgo特性无法发挥。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值