我是靠谱客的博主 长情乌龟,这篇文章主要介绍cgo 结构体指针_传递回调函数和指针到 Cgo,现在分享给大家,希望可以做个参考。

`Cgo`允许 Go 程序调用 C 库或其他暴露了 C 接口的库。正是如此,这也成为 Go 程序员工具箱的重要组成部分。

使用`Cgo`可能会比较棘手,特别是在 Go 和 C 代码中传递指针和回调函数时。

这篇文章讨论了一个端到端当例子,包含了如下几方面:

* `Cgo`的基本使用,包括链接一个传统的 C 库到 Go 二进制文件中。

* 从 Go 语言中传递 struct 到 C 语言中。

* 传递 Go 函数到 C 程序中,并安排 C 程序在随后调用它们。

* 安全的传递任意的 Go 数据到 C 代码中,这些 C 代码后续会回传这些数据到它所调用的 Go 回调中。

本文并不是一个`Cgo`的使用教程-在阅读前,需要你对它对简单使用案例有所熟悉。

在本文最后列了一些有用的`Cgo`使用教程和相关的文章。这个案例的全部源代码详见[Github](https://github.com/eliben/code-for-blog/tree/master/2019/cgo-callback)。

## 问题所在-一个C库调用多个Go回调程序

如下是一个虚构的C库的头文件,该库处理(输入)数据,并基于事件调用回调函数。

```c

typedef void (*StartCallbackFn)(void* user_data, int i);

typedef void (*EndCallbackFn)(void* user_data, int a, int b);

typedef struct {

StartCallbackFn start;

EndCallbackFn en

最后

以上就是长情乌龟最近收集整理的关于cgo 结构体指针_传递回调函数和指针到 Cgo的全部内容,更多相关cgo内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部