第1章 起步 1
1.1 Go简介 1
1.1.1 Go语言简史 1
1.1.2 Go是编译型语言 2
1.2 安装Go 2
1.2.1 在Windows系统中安装 3
1.2.2 在macOS或Linux系统中安装 4
1.3 设置环境 4
1.4 编写第一个Go程序——Hello World 5
1.4.1 使用go run编译并运行程序 6
1.4.2 Go吉祥物 6
1.5 小结 6
1.6 问与答 7
1.7 作业 7
1.7.1 小测验 7
1.7.2 答案 7
1.8 练习 7
第2章 理解类型 8
2.1 数据类型是什么 8
2.2 区分静态类型和动态类型 8
2.3 使用布尔类型 11
2.4 理解数值类型 12
2.4.1 带符号整数和无符号整数 13
2.4.2 浮点数 14
2.4.3 字符串 14
2.4.4 数组 14
2.5 检查变量的类型 15
2.6 类型转换 16
2.7 小结 17
2.8 问与答 17
2.9 作业 17
2.9.1 小测验 17
2.9.2 答案 17
2.10 练习 18
第3章 理解变量 19
3.1 变量是什么 19
3.2 快捷变量声明 21
3.3 理解变量和零值 21
3.4 编写简短变量声明 22
3.5 变量声明方式 23
3.6 理解变量作用域 24
3.7 使用指针 25
3.8 声明常量 27
3.9 小结 28
3.10 问与答 28
3.11 作业 29
3.11.1 小测验 29
3.11.2 答案 29
3.12 练习 29
第4章 使用函数 30
4.1 函数是什么 30
4.1.1 函数的结构 30
4.1.2 返回单个值 31
4.1.3 返回多个值 32
4.2 定义不定参数函数 33
4.3 使用具名返回值 34
4.4 使用递归函数 35
4.5 将函数作为值传递 36
4.6 小结 38
4.7 问与答 38
4.8 作业 38
4.8.1 小测验 38
4.8.2 答案 38
4.9 练习 39
第5章 控制流程 40
5.1 使用if语句 40
5.2 使用else语句 42
5.3 使用else if语句 43
5.4 使用比较运算符 44
5.5 使用算术运算符 45
5.6 使用逻辑运算符 45
5.7 使用switch语句 46
5.8 使用for语句进行循环 47
5.8.1 包含初始化语句和后续语句的for语句 49
5.8.2 包含range子句的for语句 49
5.9 使用defer语句 50
5.10 小结 52
5.11 问与答 52
5.12 作业 53
5.12.1 小测验 53
5.12.2 答案 53
5.13 练习 53
第6章 数组、切片和映射 54
6.1 使用数组 54
6.2 使用切片 56
6.2.1 在切片中添加元素 56
6.2.2 从切片中删除元素 58
6.2.3 复制切片中的元素 58
6.3 使用映射 59
从映射中删除元素 60
6.4 小结 61
6.5 问与答 61
6.6 作业 62
6.6.1 小测验 62
6.6.2 答案 62
6.7 练习 62
第7章 使用结构体和指针 63
7.1 结构体是什么 63
7.2 创建结构体 65
7.3 嵌套结构体 68
7.4 自定义结构体数据字段的默认值 69
7.5 比较结构体 71
7.6 理解公有和私有值 72
7.7 区分指针引用和值引用 73
7.8 小结 75
7.9 问与答 75
7.10 作业 76
7.10.1 小测验 76
7.10.2 答案 76
7.11 练习 76
第8章 创建方法和接口 77
8.1 使用方法 77
8.2 创建方法集 79
8.3 使用方法和指针 80
8.4 使用接口 83
8.5 小结 86
8.6 问与答 86
8.7 作业 87
8.7.1 小测验 87
8.7.2 答案 87
8.8 练习 87
第9章 使用字符串 88
9.1 创建字符串字面量 88
9.2 理解rune字面量 89
9.3 拼接字符串 90
9.3.1 使用缓冲区拼接字符串 92
9.3.2 理解字符串是什么 93
9.3.3 处理字符串 94
9.4 小结 97
9.5 问与答 97
9.6 作业 97
9.6.1 小测验 97
9.6.2 答案 97
9.7 练习 98
第10章 处理错误 99
10.1 错误处理及Go语言的独特之处 99
10.2 理解错误类型 101
10.3 创建错误 101
10.4 设置错误的格式 102
10.5 从函数返回错误 103
10.6 错误和可用性 104
10.7 慎用panic 104
10.8 小结 106
10.9 问与答 106
10.10 作业 106
10.10.1 小测验 106
10.10.2 答案 106
10.11 练习 107
第11章 使用Goroutine 108
11.1 理解并发 108
11.2 并发和并行 110
11.3 通过Web浏览器来理解并发 110
11.4 阻塞和非阻塞代码 111
11.5 使用Goroutine处理并发操作 112
11.6 定义Goroutine 114
11.7 小结 114
11.8 问与答 114
11.9 作业 115
11.9.1 小测验 115
11.9.2 答案 115
11.10 练习 115
第12章 通道简介 116
12.1 使用通道 116
12.2 使用缓冲通道 119
12.3 阻塞和流程控制 120
12.4 将通道用作函数参数 123
12.5 使用select语句 123
12.6 退出通道 126
12.7 小结 128
12.8 问与答 128
12.9 作业 128
12.9.1 小测验 129
12.9.2 答案 129
12.10 练习 129
第13章 使用包实现代码重用 130
13.1 导入包 130
13.2 理解包的用途 131
13.3 使用第三方包 132
13.4 安装第三方包 132
13.5 管理第三方依赖 133
13.6 创建包 135
13.7 小结 137
13.8 问与答 137
13.9 作业 137
13.9.1 小测验 137
13.9.2 答案 138
13.10 练习 138
第14章 Go语言命名约定 139
14.1 Go代码格式设置 139
14.2 使用gofmt 140
14.3 配置文本编辑器 141
14.4 命名约定 142
14.5 使用golint 143
14.6 使用godoc 144
14.7 工作流程自动化 147
14.8 小结 148
14.9 问与答 149
14.10 作业 149
14.10.1 小测验 149
14.10.2 答案 149
14.11 练习 149
第15章 测试和性能 150
15.1 测试:软件开发最重要的方面 150
15.1.1 单元测试 151
15.1.2 集成测试 151
15.1.3 功能测试 151
15.1.4 测试驱动开发 151
15.2 testing包 151
15.3 运行表格驱动测试 154
15.4 基准测试 156
15.5 提供测试覆盖率 158
15.6 小结 159
15.7 问与答 159
15.8 作业 159
15.8.1 小测验 159
15.8.2 答案 159
15.9 练习 160
第16章 调试 161
16.1 日志 161
16.2 打印数据 164
16.3 使用fmt包 165
16.4 使用Delve 168
16.5 使用gdb 170
16.6 小结 171
16.7 问与答 171
16.8 作业 171
16.8.1 小测验 171
16.8.2 答案 172
16.9 练习 172
第17章 使用命令行程序 173
17.1 操作输入和输出 174
17.2 访问命令行参数 174
17.3 分析命令行标志 176
17.4 指定标志的类型 177
17.5 自定义帮助文本 178
17.6 创建子命令 179
17.7 POSIX兼容性 182
17.8 安装和分享命令行程序 182
17.9 小结 184
17.10 问与答 184
17.11 作业 184
17.11.1 小测验 185
17.11.2 答案 185
17.12 练习 185
第18章 创建HTTP服务器 186
18.1 通过Hello World Web服务器宣告您的存在 186
18.2 查看请求和响应 187
18.2.1 使用curl发出请求 188
18.2.2 详谈路由 189
18.3 使用处理程序函数 189
18.4 处理404错误 190
18.5 设置报头 191
18.6 响应以不同类型的内容 192
18.7 响应不同类型的请求 194
18.8 获取GET和POST请求中的数据 195
18.9 小结 197
18.10 问与答 198
18.11 作业 198
18.11.1 小测验 198
18.11.2 答案 198
18.12 练习 199
第19章 创建HTTP客户端 200
19.1 理解HTTP 200
19.2 发出GET请求 201
19.3 发出POST请求 202
19.4 进一步控制HTTP请求 204
19.5 调试HTTP请求 205
19.6 处理超时 207
19.7 小结 208
19.8 问与答 209
19.9 作业 209
19.9.1 小测验 209
19.9.2 答案 209
19.10 练习 210
第20章 处理JSON 211
20.1 JSON简介 211
20.2 使用JSON API 213
20.3 在Go语言中使用JSON 213
20.4 解码JSON 217
20.5 映射数据类型 219
20.6 处理通过HTTP收到的JSON 220
20.7 小结 221
20.8 问与答 221
20.9 作业 222
20.9.1 小测验 222
20.9.2 答案 222
20.10 练习 222
第21章 处理文件 223
21.1 文件的重要性 223
21.2 使用ioutil包读写文件 224
21.2.1 读取文件 224
21.2.2 创建文件 225
21.3 写入文件 227
21.4 列出目录的内容 228
21.5 复制文件 229
21.6 删除文件 230
21.7 使用文件来管理配置 231
21.7.1 使用JSON文件 231
21.7.2 使用TOML文件 232
21.8 小结 234
21.9 问与答 234
21.10 作业 234
21.10.1 小测验 235
21.10.2 答案 235
21.11 练习 235
第22章 正则表达式简介 236
22.1 定义正则表达式 236
22.2 熟悉正则表达式语法 238
22.3 使用正则表达式验证数据 239
22.4 使用正则表达式来变换数据 240
22.5 小结 241
22.6 问与答 241
22.7 作业 241
22.7.1 小测验 242
22.7.2 答案 242
22.8 练习 242
第23章 Go语言时间编程 243
23.1 时间元素编程 243
23.2 让程序休眠 245
23.3 设置超时时间 245
23.4 使用ticker 246
23.5 以字符串格式表示时间 247
23.6 使用结构体Time 248
23.7 时间加减 249
23.8 比较两个不同的Time结构体 249
23.9 小结 250
23.10 问与答 250
23.11 作业 251
23.11.1 小测验 251
23.11.2 答案 251
23.12 练习 251
第24章 部署Go语言代码 252
24.1 理解目标 252
24.2 压缩二进制文件的大小 255
24.3 使用Docker 256
24.4 下载二进制文件 258
24.5 使用go get 259
24.6 通过包管理器发布代码 260
24.7 小结 260
24.8 问与答 260
24.9 作业 261
24.9.1 小测验 261
24.9.2 答案 261
24.10 练习 261