简述GoLang优势与生态
开门见山,一睹golang的风采
- 性能优势
- 部署运维成本低
- 编码格式统一;测试简单
1. 性能优势
Go
语言被称为是:"21世纪的C语言",虽然这个帽子戴的有点高,不妨这里给大家解读一下,其实这句话有两层含义:
第一层含义是: Go
语言的语法和C语言类似,如果你会C语言,上手会很快。但如果你不会C语言,其实也不用担心,比起C语言, Go
语言上手其实很简单。
第二层含义是: Go
语言的性能, Go
语言内置强大的并发模型 goroutine
,它能让我们快速开发高并发web系统,并且在同样服务器资源的情况下, Go
语言表现出来的性能也是相当的优秀,这也是推荐大家选择选择 Go
语言的原因之一。
2. 部署运维成本低
这是我选择 Go
语言的第二个原因。 Go
语言属于编译型语言,最终部署上线,我们只需要部署项目编译后的二进制文件即可,类比一下像 PHP
或 python
这种解释性语言在服务器上运行还需要安装相应的运行环境,而使用二进制代码方式使得部署变得更为简单,也不会存在多版本共享环境的兼容性问题,运维也变得非常容易。
3.1 编码格式统一
Go
语言官方内置了统一代码风格的工具 gofmt
( IDE
一般都会内置集成), 用来规范大家代码风格,这对于需要多人协作项目尤为重要。
比如,现在你需要接手一个外包团队项目,这个外包项目如果项目的编码风格和你不一致,当你接手后,你的心情多半沮丧的,因为这会增加你的改造成本。
更或是,你现在需要接手一个由前前前同事所开发的老项目,如果代码风格不统一,可想而知接下来会发生什么...
Go
语言官方其实也是注意到了这些痛点,也避免了由第三方产生的规范不一致的问题,以官方的角度统一规范,从而降低整个项目的协作运维成本。
3.2 测试简单
Go
语言编写测试代码真的非常简单,这个特性真的是刚需啊。我们在项目开发中经常会遇到这样的事情,比如当你负责为项目负责开发一个独立的短信服务模块,这个功能供另个同事在项目里调用,当你开发完成后如何测试功能是否正常呢?
这种测试在 Go
语言中变得相当容易,你只需要在你代码文件同级目录创建一个以 _test.go
结尾的文件,然后在文件里编写针对特定功能测试函数即可,更重要的是,这个测试文件是可以单独运行的,你不需要再去集成整个项目运行环境, Go
语言让单元测试变得非常容易。
此外,我们经常还会做一些基准测试,比如:每种语言都会为字符串拼接提供多种实现方式,那不同的拼接性能如何对比测试呢?在 Go
语言里编写这种基准测试非常简单,至于更细节的实操内容,后面会有单独的章节介绍 Go
语言如何编写测试代码。
Go 语言生态
当下使用 Go
语言开发的软件产品非常众多,而且知名的产品也不再少数,足见这门语言的强大:
软件 | 描述 | 链接 |
---|---|---|
docker | 家喻户晓的容器技术 | github.com/moby/moby |
kubernetes | 容器编排引擎,google出品 | github.com/kubernetes/kubernetes |
etcd | 分布式服务注册发现系统 | github.com/etcd-io/etcd |
influxdb | 时序数据库 | github.com/influxdata/influxdb |
grafana | 数据监控可视化看板 | github.com/grafana/grafana |
prometheus | 开源监控系统 | github.com/prometheus/prometheus |
consul | 分布式服务发现系统 | github.com/hashicorp/consul |
nsq | 亿级消息队列 | github.com/nsqio/nsq |
TiDB | 分布式数据库, go + rust 打造 | github.com/pingcap/tidb |
除了上述表格中列举的产品外, Go
语言还涉足于像区块链、微服务等场景,开源的框架也非常多,所以说 Go
语言是一门值得去学习的语言。