课程表

Go语言课程

工具箱
速查手册

Go语言教程

当前位置:免费教程 » 程序设计 » Go语言

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。

Go是从2007年末由罗伯特·格里塞默(Robert Griesemer), 罗布·派克(Rob Pike), 肯·汤普森(Ken Thompson)主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。

Go是谷歌2009发布的第二款编程语言(2009年7月份,谷歌曾发布了Simple语言)。开发者罗布·派克说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。

开始学习GO语言!


Go 语言特色

  • 简洁(在不损失应用程序性能的情况下降低代码的复杂性)、快速(就像在使用一个交互式语言)、安全
  • 并行、有趣、开源
  • 专门针对多处理器系统应用程序的编程进行了优化
  • 内存管理、数组安全、编译迅速
  • 支持面向对象,而且具有真正的闭包(closures)和反射 (reflection)等功能。

Go 语言用途

Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。

对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,这对于游戏服务端的开发而言是再好不过了。


未来发展

谷歌大约2007年开始开发Go,并于2008年投入了一组全职员工。谷歌当初将该语言设计为一款系统编程语言,可以被用于网络服务器、存储系统和数据库中。但是谷歌认为,该语言还有望被用于其它领域。

谷歌对Go寄予厚望。其设计是让软件充分发挥多核心处理器同步多工的优点,并可解决面向对象程序设计的麻烦。它具有现代的程序语言特色,如垃圾回收,帮助程序设计师处理琐碎但重要的内存管理问题。Go的速度也非常快,几乎和C或C++程序一样快,且能够快速制作程序。

Go的网站就是用Go所建立,但谷歌有更大的野心。该软件是专为构建服务器软件所设计(如谷歌的Gmail)。谷歌认为Go还可应用到其他领域,包括在浏览器内执行软件,取代JavaScript的角色。

创始人之一的派克说:它至少在强度上比JavaScript高一级。谷歌自建Chrome浏览器,部分原因就是加速JavaScript和网页表现,而谷歌已经融合了本身的技术,如Native Client和Gears。

派克表示,Go另一项与网络相关的特色,是服务器和用户端设备,如PC或手机,可以分担工作。因此,使用Go的服务便可轻松适应不同的用户端处理性能。

Go也可解决现今的一大挑战:多核心处理器。一般电脑程序通常依序执行,一次进行一项工作,但多核心处理器更适合并行处理许多工作。派克说:我们自认有足够的支持,可改善这方面的问题。

Go团队正在寻求帮助。其中一个重要领域是改善Go能够使用的runtime library。这类library可提供许多工具和功能,加快程序设计的过程。而Go的library还包括许多重要的设计元素,并供应处理同作、垃圾收集和其他低层杂务的资源。

Go团队也需要编译器方面的协助。汤普森曾为32位元和64位元x86处理器,及ARM处理器写过一些编译器,后来加入的Taylor也为GCC编译器写过一个Go前端。

尽管谷歌对Go有很大的野心,该公司也明白,这项计划无法完全取代现有的技术。派克说:我不认为我们能取代任何东西。我们只是创造出这个领域的另一个角色。


团队大牛

肯·汤普森(Ken Thompson):1983年图灵奖(Turing Award)和1998年美国国家技术奖(National Medal of Technology)得主。他与丹尼斯·里奇(Dennis Ritchie)是Unix的原创者。汤普森也发明了后来衍生出C语言的B程序语言。而C语言的作者是他的老搭档丹尼斯·里奇。

罗布·派克(Rob Pike):曾是贝尔实验室(Bell Labs)的Unix团队,和Plan 9操作系统计划的成员。他与汤普森共事多年,并共创出广泛使用的UTF-8 字元编码。

罗伯特·格里塞默(Robert Griesemer):曾协助制作Java的HotSpot编译器,和Chrome浏览器的JavaScript引擎V8。

此外还有Plan 9开发者Russ Cox、和曾改善已广泛使用之开源码编译器GCC的Ian Lance Taylor。


第一个 Go 程序

接下来我们来编写第一个 Go 程序 hello.go(Go 语言源文件的扩展是 .go),代码如下:

实例

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

在线运行实例

执行以上代码输出

$ go run hello.go 
Hello, World!
转载本站内容时,请务必注明来自W3xue。
部分原创内容未经授权禁止转载,违者必究。