引子
现在身边最火的就是从PHP转向Go,真的是好多人!
我来谈谈我的一些个人理解:为什么从PHP转向Go?
Go真的有一种说不出的优雅感
从安装便捷到代码严谨,再到跨平台交叉编译,最后再想想运行速度,而且编译后的二进制就相当于加密了,简直是不要太香!
安装便捷
安装超简单:
$ cd /tmp/ && wget https://golang.google.cn/dl/go1.22.1.darwin-amd64.tar.gz
$ tar -xzf go*.tar.gz -C /usr/local/
PATH配置:
# vi /etc/profile
# PATH
PATH="/sbin:/bin"
PATH="/usr/sbin:/usr/bin:$PATH"
PATH="/usr/local/sbin:/usr/local/bin:$PATH"
## JDK
PATH="/usr/local/jdk/Contents/Home/bin:$PATH"
## Go
export GOROOT=/usr/local/go
## GOPATH
export GOPATH=/var/go
export GOBIN=$GOPATH/bin
PATH="$GOROOT/bin:$GOBIN:$PATH"
export PATH
goimports:
$ mkdir -p $GOPATH/src/golang.org/x/tools && git clone https://github.com/golang/tools.git $GOPATH/src/golang.org/x/tools
$ cd $GOPATH/src/golang.org/x/tools/cmd/goimports
$ go install $GOPATH/src/golang.org/x/tools/cmd/goimports
$ ls -al $GOPATH/bin
$ mv $GOPATH/bin/goimports /usr/local/bin/
$ go version
$ go env
就这么简单,全程5分钟!
代码严谨
目录严格+结构严格+类型严格+引包严格+错误处理严格+代码风格严格+内存管理严格+并发处理严格…
一大堆严格换回的就是,代码的高质量,你像PHP那样随便建目录、随便写变量、随便引用一个不使用的“包”,只怕是不行了……严格换回来的就是按规则来,代码质量自然就提升了……
跨平台交叉编译
GOOS 设定内核,GOARCH 设定架构,一个命令完事,简直不要太爽
运行速度
感觉上就觉得快,实际比一比,真的快!
编译后的二进制就相当于加密了
如果对Go二进制文件逆向工程,那就是超烦的细致活了,需要分析、梳理、研究……有这种能力的人基本上也没时间……
包开发大架构
我感觉一名资深的PHP,转学Go,也许都用不了三天……
但是要想熟练运用Go,进行大型项目开发,可能还需在协程、并发与锁、包开发、架构下功夫!说到点子上了,最终的最终,看的是架构能力!简单却又那么的深奥!
小结
Go的优秀是毫无疑问的,而且随着普及、社区、框架等这些生态越发的成熟,还是很有前途的!使用Go构建高可靠性的Web应用服务,是非常明智的选择!