淘先锋技术网

首页 1 2 3 4 5 6 7

以后是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以并发使用。”

java泛型的优缺点,以后是Go的天下吗