本书结构

本书共分为四个部分。

第一部分,将会带领你进入Go语言的世界,让你对Go语言有个基本的了解,这一部分包含两章。

第1章,会简要介绍Go语言为大家带来的优秀特性和新鲜活力,以及与其他主流编程语言相比的优缺点。

第2章,将对编写和运行Go语言程序所需的所有前期工作进行说明。这包括安装和配置方法、工程结构以及标准命令。通过对这些知识的学习和实践,相信读者就可以为编写Go代码和建立Go项目做好准备了。

第二部分,会详细阐述Go语言的基础编程知识,这一部分包含了3章。

第3章,首先会介绍Go语言中的关键字、运算符、类型、表达式等最基本的概念。掌握这些知识,读者可以了解到Go语言在代码构建方面的言简意赅。然后,展示Go语言基本数据结构及其主要操作方法和技巧。Go语言的基本数据结构的操作方式是非常脚本化的,使用起来也非常简单和方便。最后,我将加入一些相对高级一点的主题,比如基本数据结构的初始化方式、可比性与有序性,以及类型转换方式等,从中我们会看到Go语言的设计者们在灵活性和简洁性之间做出的取舍。

第4章,我们一起来学习Go语言的流程控制方法。这些方法已经足以体现出Go语言的先进和强大(当然,我们在后面还会看到更棒的特性)。这一章不但会介绍Go语言中基本的逻辑控制方法,还会深入阐述Go语言特有的程序编写方式,以及这些特有方式所体现出的Go语言程序设计哲学。

第5章,将详细介绍Go语言程序的测试和文档的编写。

第三部分,将集中笔墨讲解Go语言中最强悍的部分——并发编程的概念和知识,这一部分同样包含了3章的内容。

第6章,先简要介绍与多进程编程和多线程编程有关的知识。这些知识会作为理解Go语言并发编程模型的先导内容展现给大家。看过以后,大家应该可以对并发编程有一个比较清晰的理解。同时,还会指出以内存共享为基础的并发编程方式所带来的一些问题。最后,通过剖析多核时代(基于多CPU核心的计算时代)的并发编程需求,引出Go语言先进的并发编程模型。大家会看到Go语言为之做出的努力。

第7章,会向大家展示Go特有的编程要素——Goroutine(也可称为Go程)的魅力。这一章不但会介绍怎样利用Goroutine编写可并发运行的程序,还会深入阐述Goroutine背后的运作机理和执行过程,使读者知其然更知其所以然。此外,还会介绍标准库的runtime代码包中与Goroutine相关的一些API。这一章的另一个重点是对Go语言并发编程中不可或缺的部分——Channel的介绍。Channel与Goroutine堪称绝配,它的用法相当灵活。这一章在介绍了Channel的基本概念和使用规则之后,还会介绍多种Channel的实际用法,并通过丰富的示例来说明每种使用方法和技巧。最后,还描述了标准库的time代码包中的API是如何通过Channel来实现其强大功能的。

第8章,将是对Go语言提供的传统同步和互斥方法的介绍。这包括锁、条件变量、原子操作、WaitGroup、临时对象池,等等。这些同步方法的提供者大都是标准库的sync代码包。虽然Go语言官方并不推荐使用这些方式来控制和协调Go语言编写的并发程序,但不容忽视的是,它们确实在一些应用场景中是简单有效的。

第四部分仅包含一章,即第9章。

第9章,包括了一个基本囊括本书前三个部分所涉及的全部概念和知识的完整示例。我会带领大家一步一步地编写这个示例。在这个过程中,我会进一步阐述Go语言的哲学和理念,以及我在多年编程生涯中的一些见解和感悟。大家可以通过对这个示例的学习来巩固我们之前讲到的Go语言知识,并加深对Go语言并发编程的理解。

在本书的附录中,将向大家简单介绍目前在国内外比较活跃的一部分Go语言开源项目和Go语言社区。这会使大家学习Go语言的道路变得更加顺畅,也有利于大家找到志同道合的朋友。