这里是Z哥的个人公众号
每周五11:45 按时送达
当然了,也会时不时加个餐~
我的第「215」篇原创敬上
大家好,我是Z哥。
最近还是一如既往得忙,我估计至少得到明年1月中下旬才能稍微喘口气。所以今天就不整长篇大论了,简单和大家分享一些收获。
这段时间在新团队用golang做开发,摸滚打爬完成了项目的搭建、并完成了4个用户故事的开发,对于golang的使用算是勉强达到了较为熟练的状态。
简单聊聊感受吧。目前感受到golang的几个明显优点:
- 部署简单。特别是部署为一个web服务,2行代码就能搞定,这感觉真的爽。
- 很轻松就能使用协程模式进行编程,对于程序性能有追求的小伙伴来说这点就很香了。
- 可以在方法体内的任意位置使用defer关键字来释放资源,简洁明了,不像很多语言要包一个try- finally。
- 天然支持多返回值,可以避免像别的语言一样使用一些奇技淫巧。
但是也有很让人难受的地方,就是golang的官方库不像java、.net那种提供了封装比较厚的库,甚至是更便捷的语法糖,导致整体的编码量其实大了不少。不过说实话,这样具有了更大的编程乐趣,不会显得自己更像个搬砖的。(虽然实际还是搬砖的)
总体来说,golang还不错,如果没接触过的小伙伴可以去玩玩看,可以拓宽自己的编程视野。况且,现在行业中golang岗位的供需比更友好,如果不想继续在java里和大家比谁更卷的话,强烈推荐。
最后再分享一些目前用到的,觉得还不错的框架,你可以收藏一下。如果未来你打算玩golang的话,可以翻出来看看,可以帮助你更快地上手开始一个项目。
01 github.com/ahmetb/go-linq/
一个模仿.net中linq的库,因为golang不支持lambda表达式,所以用起来有些变扭,但是可以节约你不少处理array、slice、map等集合的代码。Linq到底有多香,相信.net开发者们都体会过。
如果为了让项目快速run起来的话,这个库可以用。但是如果你对性能要求特别严苛的话,那估计还是自己手写for循环,毕竟这个库里面用到了不少反射机制,不过相比手写的性能差异有多大我倒是没测试过,有测试过的小伙伴可以在评论区分享一下。
02 github.com/streadway/amqp
从名字也可以看出,一个基于amqp协议封装的库,可以用来调用RabbitMQ之类的消息队列中间件。
03 https://github.com/zeromicro/go-zero
这个就比较厉害了,一个包含web和rpc的框架,内置了很多微服务中常用的能力,直接贴一些官方描述的优势:
- 轻松获得支撑千万日活服务的稳定性
- 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码
- 微服务治理中间件可无缝集成到其它现有框架使用
- 极简的 API 描述,一键生成各端代码
- 自动校验客户端请求参数合法性
- 大量微服务治理和并发工具包
04 gorm.io/gorm
这个也是我想偷懒才用的,从名字也能看出,一个orm库。因为golang里还没有泛型,所以目前这个库的使用上不像有泛型支持的语言那么舒服,但是相似度大概80%吧。的确可以让你少写不少与数据库操作的代码。
好了,今天就分享这么多吧,文章短了点,但是实在挤不出太多时间,大家谅解哈~
原创文章,转载请注明本文链接: https://zacharyfan.com/archives/1541.html
关于作者:张帆(Zachary,个人微信号:Zachary-ZF)。坚持用心打磨每一篇高质量原创。欢迎扫描二维码~
定期发表原创内容:架构设计丨分布式系统丨产品丨运营丨一些思考。
如果你是初级程序员,想提升但不知道如何下手。又或者做程序员多年,陷入了一些瓶颈想拓宽一下视野。欢迎关注我的公众号「跨界架构师」,回复「技术」,送你一份我长期收集和整理的思维导图。
如果你是运营,面对不断变化的市场束手无策。又或者想了解主流的运营策略,以丰富自己的“仓库”。欢迎关注我的公众号「跨界架构师」,回复「运营」,送你一份我长期收集和整理的思维导图。