我是一个着迷于产品和运营的技术人,乐于跨界的终身学习者。欢迎关注我的个人公众号「跨界架构师」
每周五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%吧。的确可以让你少写不少与数据库操作的代码。
好了,今天就分享这么多吧,文章短了点,但是实在挤不出太多时间,大家谅解哈~
推荐阅读:
如果你喜欢这篇文章,可以点一下右下角的「爱心」,支持我的创作~
定期发表原创内容:架构设计丨分布式系统丨产品丨运营丨一些深度思考。