前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言·不服就干

Go语言·不服就干

作者头像
李海彬
发布2018-03-19 11:42:42
9080
发布2018-03-19 11:42:42
举报
文章被收录于专栏:Golang语言社区Golang语言社区
不知不觉,我们团队选择go语言已经两年了,从最开始摸着石头过河到现在的驾轻就熟,感慨万千,总结来说:不服就干

孙悟空不服天庭,所以大闹天空,那我们不服谁呢?可能不服某位年龄不低的老大哥对世界的绝对统治吧,想要翻出点浪花来。

是的,不服那就干!干之前当然得考虑过潜在的风险,最终确定在可控范围之内,同时因为Go的简单,团队转型也非常顺利,大概一周时间,就华丽丽的转型成功。

项目方面,先后做了消息推送、IM即时聊天、API网关、统一监控平台(系统监控、应用监控、全链路跟踪、服务可用性、业务监控等等),一路下来,最大的感受就是‘爽’,其次就是‘风一般的自由’。

Go语言本身并不自由,较为强制的代码规范、泛型的缺失、略啰嗦的错误处理等,但是我们为什么感受到‘风一般的自由’呢?原因就在于Go实在是太他么的简单了: 简单上手、简单开发、简单测试、简单部署、简单维护,基本所有你能想到现代化软件研发过程中备受诟病的复杂性问题,在Go这里,都不存在。

可能有同学要说了,这个世界上不仅仅Go语言简单,比如python,能被科学界和学生普遍接受,也是因为简单啊,而且名气比Go大,生态比Go好,你们为什么不选Python,别急,且听我细细道来。

不知道大家有没有思考过,是什么让我们在用一门工具时能感受到:哇,牛逼,答案可能是:是否拥有简单、强大的生产力。

Go的生产力体现在以下方面:

1.简单的语法

▪ 新加入的员工很容易就转型为Go程序员,而且一上手就能有不俗的开发效率

▪ 有过丰富开发经验的同学肯定都很痛恨去维护历史代码吧?各种神奇的magic代码,就算你喊破喉咙也没人能帮你解决这些,还好Go的语法足够简单,你想写出黑魔法代码估计也无能为力,因此Go的三方库代码可读性一般都很好

2.代码规范强制统一

▪ 原因基本同上 ▪ Go的标准工具链提供了代码格式化

3.部署简单

▪ 在本地交叉编译为目标平台的可执行文件,无需任何依赖,扔上去就可以运行 ▪ 容器亲和度极高

4.优秀全面的标准库

▪ 基本上正常开发需要的所有功能,标准库都支持了,而且简单易用,稳定性和性能俱佳

▪ 我们有express、tomcat

go: 我们有标准库

▪ 我们有强大的fastjson

go: 我们有标准库

▪ 我们有netty

go: 我们有标准库

▪ 我们有强大的异步回调和纤程库

go: 我们只需要在任何函数前加一个go关键字即可

▪ 我们有强大的三方性能分析工具

go: 我们有自带的标准工具链

▪ 我们有强大的测试框架

go: 我们有自带的标准工具链

5.写Go项目基本不用担心性能问题

▪ 语言级并发和高执行性能决定了只要你用Go写出了项目,那么性能一般都是不错的(数据库性能和语言性能无关)

▪ Go强大的标准工具链支持,能让项目的任何一段代码执行过慢、内存占用过高等问题纤毫毕现,我们团队解决过多个棘手的性能问题,在其它语言可能需要花费一两天的功夫,对go来说10分钟足矣

6.良好的生态

▪ 是的,我承认,go的生态远远比不上java,但是该有的都有,而且三方库质量还都高,作者也普遍较为活跃

▪ 现代化的框架、平台对go往往都支持的很好,甚至是官方原生大力支持,比如grpc、tensorflow等等

7.极快的编译速度

我要编译了,请允许我喝杯咖咖咖咖啡啡啡啡放松下,shit,这就编译完了?咖啡包装还没拆

8.IDE亲和

go的ide插件都是go语言自己写的,因此跨平台支持的很好,对于ide的亲和度也很高,vscode、idea、vim都能很好的写Go代码

9.软实时级别的GC

▪ 微妙级别的GC时间,决定了Go可以在部分实时领域大展身手,比如实时证券行情等 ▪ 我们就不必借助于C++、C去实现高性能代码了,大大提升了开发和维护效率

写了,这么多,前面的为什么在一些场景不选python,大家应该也明白了,说到底,还是想追求'风一般的自由'

快到尾声了,再简单提下Go适合的应用场景

▪ Web服务 ▪ 中间件基础服务 ▪ DevOps服务 ▪ 云计算 ▪ 游戏、直播等实时性要求较高的领域 ▪ 跨平台可执行脚本

最后,再送大家一些福利,自从用了Go,团队加班显著减少,终于有时间陪伴女朋友了,想怎么happy就怎么happy。

我们都是平凡的,也都渴望着成功。一路千辛万苦,跨过山和大海,想要逆袭,可是你敢像孙大圣那样放弃所有吗?

不服就干。


关于作者

作者: 孙飞撩技术 来源: 简书

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Go的生产力体现在以下方面:
  • 关于作者
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档