PHPer 转 Gopher 这一个月的体验~
上家公司离职后,歪打误着找了份Golang的工作,现在已入职开发Go一个月了,下面就分享下自己的心得哈,如有雷同纯属真实。
不习惯的地方
用习惯了PHP的JWT和Websocktd的第三方包和框架,再用Go相当于从0开始写,很多都要自定义。就拿Websocket来说,一搞就好几天,WebSocket花了差不多一周,如果对channel和协程不熟悉,估计还要更长。
把PHP面向对象的思维转到Go的结构体,另外结构体里还可以定义StructTag ,对于写久了PHP的人来说这应该算是颠覆性的重新学习了。
整体来说代码量比PHP多三分之一。习惯了Laravel的Migration/Event/Listerner等深度封装的东西,为了后面团队扩充方便,用Go实现分层这一块也花了不少时间,差不多一周吧。
nil这块写多了会别扭,不过仁者见仁智者见智,我觉得还可以接受,就跟try/catch一样
再来说说爽的地方
Go的简单易懂真的上手很快,之前大约是2周时间就学完并开始做项目了,对于初学者来说,甚至都不用学协程和channel等概念也可以直接上手(除非项目用到)
强类型这点也爽。不用担心项目会有什么隐藏的坑,基本上能编译通过上线就不会有问题,这一点让我很放心,换成是PHP团队,一个PHPer新手埋下了坑估计都够找很久了(这一点以前遇到过),所以以后项目也不用担心维护的坑问题
第三方包和扩展已经很多了,Gitee的统计Go的第三方已经排行第三,足够做WEB和API用了,目前还没发现项目里还有不能满足的扩展。
说说基本一致的地方
- Go Mod和Composer一样好用
- Go的开发效率约等于PHP,这周下班前我大约做了业务级别的6个API接口,换成PHP也差不多,所以不用担心写Go的效率
- 部署也基本一致,写了几个命令实现一键部署,没有想象中麻烦。
- 性能老实说Swoole是稍微比go高的,我之前做的双核压测是高1000左右,不过到了一定的量级,最主要的瓶颈是在IO(数据库/Redis)了,所以这里我把它当成约等于一致。
分享下目前技术栈
- Gin+Gorm
- WebSocket + gRPC
- Redis / Mysql
下一份工作还会继续做Golang吗?
应该还会,不过很看好hyperf这个框架,类laravel的写法,而且性能还不错,也会优先考虑
交流
话说,如果各位大佬有go的交流学习群私信我哈,一起学习加油。
推荐文章: