以后是Go的天下吗?
首先,谈以后是Go语言的天下,太早。
但有一件事情可以肯定,Go的确很强大,从以下几方面作答,可窥其未来:
为什么选择GoGo为并发而设计为什么选择Go近年来,大量的博客都在夸赞Go优于Java / Python / C / Pearl,不过题主说了不要引战,我们就主要聚焦Go本身——Go无所不能。
Go可以确保我们的工具箱可在所有平台和所有硬件上编译;Go使用非常简单软件包管理解决方案,让我们体会到什么是“得心应手”和非常便携;Go提供内存管理和垃圾收集功能;提供了本机二进制可执行文件,没有依赖项,不需要VM;不需要外部服务器,因为都已集成;几乎没有关键字,同时无需一种标准的格式化代码方法。
1)为软件工程而构建
Go几乎可以在任何机器上进行编译,因此我们不但可以使用它创建完整的Web应用,也可以构建工具来清理传入的数据以进行处理。
2)就是这样的简单
对于了解编程或其掌握一定编程语言的人,学习Go最多需要几个小时。只要你掌握Go的一定技巧之后,就可以开始动手编写了。
3)运行速度非常快
在正则表达式测试(regex-redux)中,Go运行大概3.55s,而Java运行了5.58s。 Go程序需要102行代码,而Java大概70行;的确,Go比Java代码量大一点,但是考虑到Go在运行速度上相对优于Java这样一个具有统治地位的主流编程语言,也应该亮灯转身了。
4)成为大量项目的首选
如题主所讲,许多开源项目和私有项目正在转向使用Go语言开发,并且它作为微服务和Web的标准语言变得越来越有用。可以预测,未来它可能还会取代性能较低的解决方案,如Java和C。
Go为并发而设计让我们看一下goroutines,本质上是并发函数,它们会在程序的其余部分完成运行。换句话说,我们可以启动goroutine,使其运行,并在其和成千上万的goroutines后台运行时继续运行。
网络超时?不用担心,当主循环继续时,你的goroutine将对其进行管理;
数据库完全失败?你的goroutine对此很清楚,你仍旧可以从容解决此数据库问题。
https://play.golang.org/p/U9ZZuSql8-play.golang.org
这里你能看到goroutines是如何工作的。
对于Web应用,goroutine可以让我们运行并发作业,同时避免障碍,例如,如果我们正在等待数据输入,即使用户正在键入,goroutine也会触发以提供预填充的文本,换句话说,即使并发进程花费的时间比预期的长,你的程序仍将继续运行。
最棒的是,goroutine很便宜,因此Go变得更快。
GoLangBot的创始人Naveen Ramanathan曾在在博客上写道:
“ Goroutines被多路复用到更少数量的OS线程。” “在具有数千个Goroutine的程序中,可能只有一个线程。如果该线程中的任何Goroutine阻塞(例如,等待用户输入),则会创建另一个OS线程,并将其余的Goroutines移至新的OS线程。所有这些都由运行时处理,作为程序员,我们从这些复杂的细节中抽象出来,并获得了干净的API以并发使用。”