CGO 如何把一个很复杂的 go 的结构体指针作为函数的返回

2021-01-12 14:41:39 +08:00
 swqslwl
要返回的是一个 socket 连接结构体 Conn,返回的是*Conn,用其他语言去读写关闭连接。

我看一般的做法是写个 C 的结构体,然后转化成(*C.struct_xxx)unsafe.pointer(*Conn)去访问。但是 Conn

的结构体太复杂了,用 C 语言感觉重写不了。所以想问下一般性的方法是怎么处理的呢?
1650 次点击
所在节点    Go 编程语言
3 条回复
ysc3839
2021-01-12 16:04:04 +08:00
其他语言不需要关心结构体如何,只需要拿到指针,实际操作时传给 go 函数即可。
joesonw
2021-01-12 16:06:14 +08:00
一般是做方法映射,
不要 Conn.Close()
而是 closeConn(Conn)
这样只用传递指针
useben
2021-01-12 17:37:38 +08:00
楼上的思想是对的, CGO 交互都是走指针

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/744185

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX