在go语言中如何调用自己写的c函数?

1、首先我们先建立c语言的函数,建立文件out.c

#include <stdio.h>

void out(const char* s) {
puts(s);
}

这个文件有一个out函数,就是输出传入的字符串。

2、建立go语言来调用out.c这个文件

package main

//void out(const char* s);
import "C"

func main() {
C.out(C.CString("Hello, World\n"))
}

首先还是需要开启cgo特性,在上面加入需要引入的c函数。在main中就可以通过C.out来调用这个函数,后面就是把go中的字符串转换为c语言的字符串。

由于在go中可以直接写c的方法,可以把上面2个文件合成一个文件

package main

/*
#include <stdio.h>
static void out(const char* s) {
puts(s);
}
*/
import "C"

func main() {
C.out(C.CString("Hello, World\n"))
}

最主要的就是在/**/中把c语言需要实现的内容都写进去,由于在一个文件中,也就不需要导出函数声明了。