cgo有必要存在吗?

kekemuyu · 2019-04-04 09:42:42 · 3635 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2019-04-04 09:42:42 的主题,其中的信息可能已经有所发展或是发生改变。

想不到cgo存在的用途,虽然高了一点性能和可复用c的库,但使得代码复杂性大大增加和可读性急剧下降,得不偿失啊!还不如将程序写成纯c和纯go通讯的模式


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3635 次点击  
加入收藏 微博
9 回复  |  直到 2019-04-09 15:26:04
631768417
631768417 · #1 · 6年之前

你怕是没遇到过调C的场景。。人家写好的C直接调就行了。。。 C的生态和开源的我都不说有多少了 难道你再重写一遍???

631768417
631768417 · #2 · 6年之前

顺便说一句。写黑客工具 那种现成的 hook rootkit 都是c写的。。- - 再写一遍。。。是不是很难受。

kekemuyu
kekemuyu · #3 · 6年之前
631768417631768417 #2 回复

顺便说一句。写黑客工具 那种现成的 hook rootkit 都是c写的。。- - 再写一遍。。。是不是很难受。

我是说用通讯方式实现c的调用,比如通过rpc或自定义协议。

Julius
Julius · #4 · 6年之前
kekemuyukekemuyu #3 回复

#2楼 @631768417 我是说用通讯方式实现c的调用,比如通过rpc或自定义协议。

有些情况必须要用cgo,像runc调用setns,go启动就是多线程,人家要求不是多线程才能调

jiabaozhanglixl
jiabaozhanglixl · #5 · 6年之前

很有必要,并且是go的优势之一。 不知道系统编程的,不会明白。 java和python,在这方面就是一个明显的弱点,调用C语言函数库不方便。 整个IT业的基础技术还是C语言,整个IT业还是建立在C语言的基础之上。

jarlyyn
jarlyyn · #6 · 6年之前

cgo不是本来就是go和c通信的方式么?

rpc?自定义协议?你准备改造所有的c语言库么

别的不说,我记得sqlite就是cgo的吧,总部间的要求sqlite自己跑成一个服务吧……

631768417
631768417 · #7 · 6年之前
kekemuyukekemuyu #3 回复

#2楼 @631768417 我是说用通讯方式实现c的调用,比如通过rpc或自定义协议。

同志= = 比如 hook rookit 还有楼上说的系统编程 是无法用那种什么狗屁 rpc那种那么重的协议的。。。 我也是搞java的。。但是我感觉java最大的缺点是 各种jar包 各种协议怼上去怼的特别臃肿。。。

631768417
631768417 · #8 · 6年之前
kekemuyukekemuyu #3 回复

#2楼 @631768417 我是说用通讯方式实现c的调用,比如通过rpc或自定义协议。

我给你举个例子 场景。。。实现进程的隐藏 就这么个需求 java就得费。。。。go的编译型优势就是 系统编程 兼顾 网络编程。。。你多干几年系统编程就理解了。

sam6666666
sam6666666 · #9 · 6年之前

赞同,但是考虑下项目迁移的时间问题。在和系统打交道这块少了cgo,go的优势就弱了很多。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传