请教一下:cgo是否支持回调?如果不支持的话,该如何实现回调功能呢?
该方式可行,非常感谢。另外问下如果改为:
fmt.Println(int(C.bridge_int_func(Fortytwo)))会报编译错误:cannot use Fortytwo (type func() int) as type *[0]byte in argument to _Cfunc_bridge_int_func,这是为什么呢?跟你用的方式的区别在哪呢?
#4
更多评论
说的是这样吗?
package main
// typedef int (*intFunc) ();
//
// int
// bridge_int_func(intFunc f)
// {
// return f();
// }
//
// int fortytwo()
// {
// return 42;
// }
import "C"
import "fmt"
func main() {
f := C.intFunc(C.fortytwo)
fmt.Println(int(C.bridge_int_func(f)))
// Output: 42
}
#1
首先谢谢您的回答。我主要是想用Go语言来实现回调函数,对应到您的代码就是将fortytwo函数用Go语言来实现。由于cgo是不支持在C代码中调用Go代码的,所以这种方式恐怕不行。
#2