V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
swqslwl
V2EX  ›  Go 编程语言

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

  •  
  •   swqslwl · 2021-01-12 14:41:39 +08:00 · 1631 次点击
    这是一个创建于 1415 天前的主题,其中的信息可能已经有所发展或是发生改变。
    要返回的是一个 socket 连接结构体 Conn,返回的是*Conn,用其他语言去读写关闭连接。

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

    的结构体太复杂了,用 C 语言感觉重写不了。所以想问下一般性的方法是怎么处理的呢?
    3 条回复    2021-01-12 17:37:38 +08:00
    ysc3839
        1
    ysc3839  
       2021-01-12 16:04:04 +08:00 via Android
    其他语言不需要关心结构体如何,只需要拿到指针,实际操作时传给 go 函数即可。
    joesonw
        2
    joesonw  
       2021-01-12 16:06:14 +08:00
    一般是做方法映射,
    不要 Conn.Close()
    而是 closeConn(Conn)
    这样只用传递指针
    useben
        3
    useben  
       2021-01-12 17:37:38 +08:00
    楼上的思想是对的, CGO 交互都是走指针
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1854 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:26 · PVG 00:26 · LAX 08:26 · JFK 11:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.