当前位置: 首页 > 后端技术 > PHP

PHP转Golang的一些思考

时间:2023-03-29 19:40:16 PHP

因为一些原因参与了团队的Golang项目的开发。之前开发主要使用PHP,现在长期使用Golang。想写一篇博客,分享一下目前的一些感想,Golang的优缺点。缺点1:无一例外,Emmmmblahblah...它有!我用过Golang,我明白err判断iferr!=nil{returnerr}一开始很烦人,当然现在也好不到哪里去...Golang其实有一个异常捕获机制panic/recover,但是没有错误捕获机制,即自定义异常或业务异常,如数据库执行、API请求、文件处理等,层层调用。很多时候,上层不需要关心这样的错误,只面向业务编程。这里细节的东西真的很多,就不展开了。劣势二:没有依赖包管理Golang官方目前没有提供最好的依赖包管理。1.5以后可以通过厂商管理本地依赖包。对于有需要的团队,也可以使用govenror之类的工具来实现。烦人的点图遍历乱了。当我第一次遇到这个时,我很困惑。什么?为什么for循环每次都以不同的顺序读取地图。跨包使用,为了简洁起见,/employee/user和/manager/user在其他包中都是user.show(),不直观,不过也可以加上别名。优势一:并发编程非常方便。异步编程只要一个go关键字就可以搞定...gologRequest()run()并发编程也很简单,goruntine和channel是支持Golang并发模型的基石包mainimport"fmt"funcsum(values[]int,resultChanchanint){sum:=0for_,value:=rangevalues{sum+=value}resultChan<-sum//将计算结果发送到通道}funcmain(){values:=[]int{1,2,3,4,5,6,7,8,9,10}resultChan:=make(chanint,2)gosum(values[:len(values)/2],resultChan)gosum(values[len(values)/2:],resultChan)sum1,sum2:=<-resultChan,<-resultChan//接收结果fmt.Println("Result:",sum1,sum2,sum1+sum2)}优点二:跨平台,易于部署跨平台支持的语言很多,就不多说了。让我们谈谈部署。以php为例。这不是黑色的。开发一个web服务,nginx+php+codefile都是必备的。启动和停止服务不方便。虽然可以制作定制的rpm包,但确实要花不少钱。努力。另一方面,Golang只需要执行编译好的二进制文件就可以监听端口,实现web服务。部署的优缺点一目了然。优势三:代码简洁Golang提倡“少即是多”的理念。精简感觉一开始就背道而驰,失去了代码的可读性,所以凡事都要有个度。优势四:优秀的命令行工具gofmt/build/run/get,命令行非常通用实用,尤其是fmt的出现直接让联合开发避免写的不一致,并且可以让团队review如此简单,代码格式一模一样,很难有不同的想法。优势五:做web服务、服务端应用(如日志分析处理)、客户端应用(win都可以)等多种工作。.简直不要太强大。虽然其他语言覆盖面很多,但Golang不仅能,还能&&适合。还有很多比如:DockerK8Snsq,devops领域正在蓬勃发展~最后值得一提的是,Golang的标准库相对于其他语言来说真的是丰富。Golang构建了大量的库,尤其是网络库非常强大,这部分是我最喜欢的。还有其他优点,如自动垃圾收集、非侵入式接口和高性能等。只能说,在这么多优点面前,Golang的那些缺点也很明显,很香~