我使用 golang 的时间不多,没有深入研究,算是入门级别,也总结一下使用的心得吧。

我们要考虑一个高性能解决方案,首先要考虑的是:方案是否能解决问题,其次是否足够简单:研发人员能少写代码,运维方便维护部署。下面简单说说 golang 的几个主要优点。

1. 优点

1.1. 高性能-协程

golang 源码级别支持协程,实现简单。协程使用,当底层遇到阻塞会自动切换,也就是逻辑层通过同步方式实现异步,充分利用了系统资源,同时避免了异步状态机的反人类异步回调,实现方式更为直观简单。

golang 协程是通过多线程维护,所以避免不了锁的使用,但也极大解决了研发效率问题。

1.2. 生态

有谷歌做背书,生态丰富,可以轻松获得各种高质量轮子。这样用户可以专注于业务逻辑,避免重复造轮子。

1.3. 部署

部署简单,源码编译成执行文件后,可以直接运行,减少了对其它插件依赖。不像其它语言,执行文件依赖各种插件,各种库,研发机器运行正常,放到生产环境上,死活跑不起来,需要各种安装和版本匹配。

2. 总结

golang 还有很多优点,例如有自己的 GC,有 defer 功能,函数可以返回多个参数等等。个人认为,最主要的还是上面提到的几个优点。

如果说,源码实现简单,我会推荐 python,但是 python 性能比 golang 要差一些。一个复杂的项目,很多时候,一种语言并不是万金油,需要几种一起上。高性能方面可以用 golang/c/c++,复杂的业务逻辑可以用 python,因为用 python 确实能少写很多代码,难道不香吗?!

最后总结一下,语言只是工具,没有高低之分,解决问题,要看自己工具箱的储备,保证效率情况下,哪个工具称手用哪个。