内容简介
本书全面介绍了Go语言的特点、安装部署环境、工程规范、工具链、语言语法、并发编程模型以及在多个编程实战中的应用,重点阐述了Go语言并发编程模型和机制。本书共分为四个部分,介绍了Go语言编程环境搭建、Go语言基础编程、Go语言并发编程方法及其原理,以及使用Go语言开发的应用系统的案例讲解。
本书适用于有一定计算机编程基础的从业者以及对Go语言编程感兴趣的爱好者,适合作为Go语言编程进阶教程。
目录
第一部分 Go语言的世界
第1章 初识Go语言 2
1.1 Go语言特性一瞥 2
1.2 Go语言的优劣 3
1.3 怎样学习Go语言 4
1.4 本章小结 5
第2章 Go语言环境搭建 6
2.1 安装和设置 6
2.1.1 Linux 6
2.1.2 Windows 9
2.2 工程结构 10
2.2.1 工作区 10
2.2.2 GOPATH 11
2.2.3 源码文件 11
2.2.4 代码包 14
2.3 标准命令概述 17
2.4 本章小结 18
第二部分 编程基础
第3章 词法与数据类型 20
3.1 基本词法 20
3.1.1 标识符 21
3.1.2 关键字 22
3.1.3 字面量 23
3.1.4 类型 24
3.1.5 操作符 26
3.1.6 表达式 33
3.2 数据类型 43
3.2.1 基本数据类型 44
3.2.2 数组 48
3.2.3 切片 52
3.2.4 字典 61
3.2.5 函数和方法 64
3.2.6 接口 72
3.2.7 结构体 76
3.2.8 指针 84
3.2.9 数据初始化 87
3.3 数据的使用 90
3.3.1 赋值语句 90
3.3.2 常量与变量 93
3.3.3 可比性与有序性 101
3.3.4 类型转换 108
3.3.5 内建函数 114
3.4 本章小结 118
第4章 流程控制方法 119
4.1 基本流程控制 119
4.1.1 代码块和作用域 119
4.1.2 if语句 121
4.1.3 switch语句 124
4.1.4 for语句 129
4.1.5 goto语句 137
4.2 defer语句 141
4.3 异常处理 145
4.3.1 error 146
4.3.2 panic和recover 149
4.4 实战演练——Set 154
4.5 实战演练——Ordered Map 163
4.6 本章小结 173
第5章 程序测试和文档 174
5.1 程序测试 174
5.1.1 功能测试 174
5.1.2 基准测试 180
5.1.3 样本测试 187
5.1.4 测试运行记录 189
5.1.5 测试覆盖率 193
5.2 程序文档 201
5.3 本章小结 205
第三部分 并发编程
第6章 并发编程综述 208
6.1 并发编程基础 208
6.1.1 串行程序与并发程序 209
6.1.2 并发程序与并行程序 209
6.1.3 并发程序与并发系统 210
6.1.4 并发程序的不确定性 210
6.1.5 并发程序内部的交互 210
6.2 多进程编程 211
6.2.1 进程 211
6.2.2 关于同步 217
6.2.3 管道 222
6.2.4 信号 228
6.2.5 Socket 238
6.3 多线程编程 260
6.3.1 线程 261
6.3.2 线程的同步 268
6.4 多线程与多进程 285
6.5 多核时代的并发编程 286
6.6 Go语言的并发编程 290
6.6.1 线程实现模型 290
6.6.2 调度器 299
6.6.3 更多的细节 311
6.7 本章小结 315
第7章 Goroutine和Channel 316
7.1 Goroutine的使用 316
7.1.1 go语句与Goroutine 316
7.1.2 Goroutine的运作过程 321
7.1.3 runtime包与Goroutine 322
7.1.4 Happens Before 326
7.2 Channel 327
7.2.1 Channel是什么 328
7.2.2 单向Channel 335
7.2.3 for语句与Channel 342
7.2.4 select语句 344
7.2.5 非缓冲的Channel 352
7.2.6 time包与Channel 358
7.3 实战演练——载荷发生器 363
7.3.1 参数和结果 364<
摘要与插图
前 言很高兴你能选择这本书。希望这本书能够让你成为Go粉。很多Go语言爱好者都喜欢称自己是Gopher。
Go编程语言(或称Golang,以下简称Go语言)是云计算时代的C语言。它的诞生是为了让程序员有更高的生产效率,并让程序在有并行计算支持的环境下更快速地运行。2009年11月10日,Go语言正式成为开源编程语言大家庭的一员。在本书截稿之时,它的版本是1.3。因此,本书的内容和相关代码将会围绕Go语言的1.3版本展开。
这里所说的开源是指开放源代码。开源不仅仅意味着分享和免费。对于软件开发人员来讲,它更多的是代表着一种协同工作的方式。它可以使不同公司、不同城市甚至不同国家的技术爱好者们聚集起来,以共同分享和使用源代码的方式协同完成一个任务或目标。开源的意义并不在于目标大小,而在于对某个技术领域、某个应用行业甚至整个产业的启示和推动力。开源的编程语言会更多、更好地凝聚众人的力量,并使它更快地奔向成功。
Go语言每半年就会发布一个大版本升级(比如从1.1升级到1.2、从1.2升级到1.3,等等)。这样的更新速度是很多其他编程语言望尘莫及的。其中,开源无疑起到了很大的推动作用。
Go语言虽然在2009年才真正成为开源编程语言,在2012年才发布第一个正式版——1.0版本,但是它很早就进入了中国软件开发者的视野。这不单单是因为它是由几位教父级软件开发先驱开发、由Google公司发布的开源编程语言,更是因为它是一门拥有诸多特性、拥有高性能和生产效率、为云计算时代和软件工程而生的多范式编程语言。Go语言虽然年轻,但已经足以用于软件生产。
目前来看,Go语言在中国发展的不足就是其开源社区松散,爱好者不论是在地理位置上还是在互联网络中都比较分散。当然,这也是由于Go语言的年轻所导致的。目前,在中国没有一个可以主导语言爱好者学习和交流的Go语言社区,语言爱好者的数量也相对较少。它不像Python那样,在中国有一个统一的、分支众多的语言爱好者联盟,Python语言爱好者可以很轻易地找到志同道合的组织和同行,并积极地进行分享和交流。Go语言在这方面有所缺失的很大一部分原因是在中国使用Go语言的软件开发者太少。因此,我希望能通过本书使更多的同行了解和使用Go语言,并用它来创造更多的价值。我也希望大家能够协力共建中国的Go语言技术社区。
通过本书,我会带领大家进入Go语言的世界,领略Go语言的魅力,为大家打开一扇门,也力求使大家对使用Go语言开发软件产生更多的兴趣。
本书结构
本书共分为四个部分。
第一部分,将会带领你进入Go语言的世界,让你对Go语言有个基本的了解,这一部分包含两章。
第1章,会简要介绍Go语言为大家带来的特性和新鲜活力,以及与其他主流编程语言相比的优缺点。
第2章,将对编写和运行Go语言程序所需的所有前期工作进行说明。这包括安装和配置方法、工程结构以及标准命令。通过对这些知识的学习和实践,相信读者就可以为编写Go代码和建立Go项目做好准备了。
第二部分,会详细阐述Go语言的基础编程知识,这一部分包含了3章。
第3章,先会介绍Go语言中的关键字、运算符、类型、表达式等本的概念。掌握这些知识,读者可以了解到Go语言在代码构建方面的言简意赅。然后,展示Go语言基本数据结构及其主要操作方法和技巧。Go语言的基本数据结构的操作方式是脚本化的,使用起来也简单和方便。,我将加入一些相对一点的主题,比如基本数据结构的初始化方式、可比性与有序性,以及类型转换方式等,从中我们会看到Go语言的设计者们在灵活性和简洁性之间做出的取舍。
第4章,我们一起来学习Go语言