查看原文
其他

golang使用3周总结

Zachary 跨界架构师 2022-09-10

这里是Z哥的个人公众号

每周五11:45 按时送达

当然了,也会时不时加个餐~

我的第「215」篇原创敬上



大家好,我是Z哥。

最近还是一如既往得忙,我估计至少得到明年1月中下旬才能稍微喘口气。所以今天就不整长篇大论了,简单和大家分享一些收获。

这段时间在新团队用golang做开发,摸滚打爬完成了项目的搭建、并完成了4个用户故事的开发,对于golang的使用算是勉强达到了较为熟练的状态。

简单聊聊感受吧。目前感受到golang的几个明显优点:

  1.  部署简单。特别是部署为一个web服务,2行代码就能搞定,这感觉真的爽。

  2. 很轻松就能使用协程模式进行编程,对于程序性能有追求的小伙伴来说这点就很香了。

  3. 可以在方法体内的任意位置使用defer关键字来释放资源,简洁明了,不像很多语言要包一个try- finally。

  4. 天然支持多返回值,可以避免像别的语言一样使用一些奇技淫巧。


但是也有很让人难受的地方,就是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%吧。的确可以让你少写不少与数据库操作的代码。


好了,今天就分享这么多吧,文章短了点,但是实在挤不出太多时间,大家谅解哈~



推荐阅读:


原创不易,如果你觉得这篇文章还不错,就「点赞」或者「在看」一下吧,鼓励我的创作 :)


也可以分享我的公众号名片给有需要的朋友们。

如果你有关于软件架构、分布式系统、产品、运营的困惑

可以试试点击「阅读原文

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存