C和Go相互调用
C可以调用Go,并且Go可以调用C, 如果更进一步呢, C-->Go-->C 或者 Go-->C-->Go的调用如何实现?
本文通过两个简单的例子帮助你了解这两种复杂的调用关系。本文不涉及两者之间的复杂的数据转换,官方文章C? Go? Cgo!、wiki/cgo和cmd/cgo有一些介绍。
Go-->C-->Go
Go程序调用C实现的函数,然后C实现的函数又调用Go实现的函数。
1、首先,我们新建一个hello.go的文件:
1package main
2import"C"
3import"fmt"
4//export HelloFromGo
5func HelloFromGo() {
6 fmt.Printf("Hello from Go!\n")
7}
它定义了一个HelloFromGo函数,注意这个函数是一个纯的