Go语言是google推出的新兴后端开发语言,我认识的人里,用了都说好。经过前段时间的学习,做个总结。
Go语言的主要优势
工程化
- 强制代码风格,通过gofmt工具,方便团队协作。
- 依赖管理的语言级别支持(GOPATH),类似于在Java中使用了maven,Gradle工具。
- 容器技术docker用go编写,go语言在容器应用上有很大的亲和力,譬如通过交叉编译可以只打包可执行程序,极大减小容器的体积。由于这一点很大程度上属于docker的优势,算半条。
- 交叉编译为目标OS的可执行代码十分方便,对制作命令行小工提高效率。
- 开源生态足够丰富,涌现大量的优秀项目和第三方组件。参考:https://github.com/avelino/awesome-go
语言本身
- goroutine给并发编程带来了性能和开发速度的极大提升,不再需要复杂的多线程代码。
- 接口的非侵入性。go的接口重于功能而非血统,取消了implements关键字,贯彻了邓小平理论『只要能抓老鼠就是好猫』。
- 强制使用utf-8编码,乱码问题减少
- 关键字少,取消分号,文法简洁。
- go自带的包满足了大部分后端开发的需要,这属于『后发优势』。举例如log自带包就很足够,而Java中不引入log4j则很难灵活日志。又比如发送http请求,只需要使用net/http包就够用,Java中需要引入apache-httpclient。
当前Go语言的一些问题:
- IDE生态不够丰富,目前使用下来体验最好的是IntelliJ IDEA安装golang-plugin配合delve做debug。然而debug体验略有欠缺,比如不能逐行跟踪。参考https://github.com/go-lang-plugin-org/go-lang-idea-plugin
- 版本还在激烈的迭代,未来可能会有重大更新,不够稳定。
有疑问加站长微信联系(非本文作者)