1.1 Go语言特性一瞥

我们先来看看Go语言的主要特性。

  • 开放源代码的通用计算机编程语言。开放源代码的软件(以下简称开源软件)更容易被修正和改进。因为,几乎所有的互联网用户都可以看到这些源代码,并可以提供自己的意见和建议,甚至还可以参与到实际的开发工作中去。与一些不公开源代码的软件(也可称为闭源软件)相比,开源软件的开发迭代周期要短很多,并且迭代速度要快很多。这正印证了“众人拾柴火焰高”这句俗语。

  • 虽为静态类型、编译型的语言,但Go语言的语法却趋于脚本化,非常简洁。这方面的内容,我们会在第3章集中论述。我们可以直接使用各种字面量来表示各种数据类型以及它们的值,并且还可以使用非常简约的方式操作它们。

  • 卓越的跨平台支持,无需移植代码。这里的跨平台主要是指跨计算架构和操作系统。Go语言目前已经支持绝大部分主流的计算架构和操作系统了,并且这个范围还在不断地扩大。我们只要下载与之对应的Go语言安装包,并且经过基本一致的安装和配置步骤,就可以使Go语言就绪了。除此之外,在编写Go语言程序的过程中,我们几乎感觉不到不同平台的差异。

  • 全自动的垃圾回收机制,无需开发者干预。Go语言程序在运行过程中的垃圾回收工作由Go语言运行时系统负责。不过,Go语言也允许我们进行人工干预。在第三部分,我们会适时地介绍这方面的内容。

  • 原生的先进并发编程模型和机制。Go语言拥有自己独特的并发编程模型,其组成部分有Goroutine(也可称为Go程)和Channel(也可称为通道)等。实际上,这部分内容也是本书最重要的主题。在第三部分,我们会一起领略它们的风采。

  • 拥有函数式编程范式的特性,函数为一等代码块。Go语言支持多种编程风格,包括面向对象编程和函数式编程。而对函数式编程的最有力的支撑就是Go语言将函数类型视为了第一等类型。我们会在第3章中说明这一点。

  • 无继承层次的轻量级面向对象编程范式。Go语言中的接口与实现之间完全是非侵入式的。这种接口实现方式总是被人们津津乐道。不但如此,在Go语言中只有类型嵌入而没有类型继承。这规避了很多与继承有关的复杂问题,也使类型层次更加简单化了。这部分内容同样会在第3章中展示。

  • 内含完善、全面的软件工程工具。Go语言自带的命令和工具相当地强大。通过它们,我们可以很轻松地完成Go语言程序的获取、编译、测试、安装、运行、运行分析等一系列工作。可以看到,这几乎涉及了开发和维护一个软件的所有环节。这可以算是一站式的编程体验了。在本章,我们会简要地浏览一下这些工具。

  • 代码风格强制统一。Go语言的安装包中有自己的代码格式化工具。我们可以利用它来统一程序的编码风格。

  • 程序编译和运行速度都非常快。由于Go语言的简洁语法,我们可以快速地编写出相应的程序。加之Go语言强大的运行时系统和先进的并发编程模型,Go语言程序可以充分地利用计算环境并运行飞快。在这本书的内容中,我们会通过对Go语言的各个方面的深入介绍使你真正地了解到Go语言如此优秀的原因。

  • 标准库丰富,极适合开发服务端程序和Web程序。Go语言是通用的编程语言,但是它也有尤为擅长的几个方面,例如系统级程序和Web程序等,这主要得益于它丰富的标准库。我们会在本书中介绍很多Go语言标准库及其使用方法。但是由于篇幅原因,这些只会是冰山一角。

不知道在看到Go语言如此多的先进特性之后,你是否已经心动了。反正我已经为此折服并感到激动了。这也是我迫不及待地深入研究它并通过编写一本专著把我知道的所有细节与大家分享的原因。