想不到cgo存在的用途,虽然高了一点性能和可复用c的库,但使得代码复杂性大大增加和可读性急剧下降,得不偿失啊!还不如将程序写成纯c和纯go通讯的模式
有疑问加站长微信联系(非本文作者)

想不到cgo存在的用途,虽然高了一点性能和可复用c的库,但使得代码复杂性大大增加和可读性急剧下降,得不偿失啊!还不如将程序写成纯c和纯go通讯的模式
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
你怕是没遇到过调C的场景。。人家写好的C直接调就行了。。。 C的生态和开源的我都不说有多少了 难道你再重写一遍???
顺便说一句。写黑客工具 那种现成的 hook rootkit 都是c写的。。- - 再写一遍。。。是不是很难受。
我是说用通讯方式实现c的调用,比如通过rpc或自定义协议。
有些情况必须要用cgo,像runc调用setns,go启动就是多线程,人家要求不是多线程才能调
很有必要,并且是go的优势之一。 不知道系统编程的,不会明白。 java和python,在这方面就是一个明显的弱点,调用C语言函数库不方便。 整个IT业的基础技术还是C语言,整个IT业还是建立在C语言的基础之上。
cgo不是本来就是go和c通信的方式么?
rpc?自定义协议?你准备改造所有的c语言库么
别的不说,我记得sqlite就是cgo的吧,总部间的要求sqlite自己跑成一个服务吧……
同志= = 比如 hook rookit 还有楼上说的系统编程 是无法用那种什么狗屁 rpc那种那么重的协议的。。。 我也是搞java的。。但是我感觉java最大的缺点是 各种jar包 各种协议怼上去怼的特别臃肿。。。
我给你举个例子 场景。。。实现进程的隐藏 就这么个需求 java就得费。。。。go的编译型优势就是 系统编程 兼顾 网络编程。。。你多干几年系统编程就理解了。
赞同,但是考虑下项目迁移的时间问题。在和系统打交道这块少了cgo,go的优势就弱了很多。