前言
第1章 概述 1
1.1 Go语言的特性 1
1.2 开发环境的搭建 2
1.2.1 下载与目标操作系统匹配的安装包 2
1.2.2 设置环境变量 2
1.2.3 集成开发环境的选择 4
1.2.4 编写个Go程序 4
1.3 Go命令行和项目结构 5
1.3.1 需要GOPATH支持的方式 5
1.3.2 不需要GOPATH支持的方式 5
1.4 本章小结 5
第2章 基础知识 6
2.1 引子 6
2.2 了解Go语言的基本语法 7
2.2.1 变量 7
2.2.2 声明与赋值 7
2.2.3 多个变量的声明与赋值 8
2.2.4 变量的作用域 8
2.2.5 常量 9
2.2.6 基本数据类型 9
2.2.7 类型转换 12
2.2.8 自定义类型 12
2.2.9 函数 13
2.2.10 流程控制 15
2.2.11 结构体 19
2.2.12 接口 21
2.3 本章小结 22
第3章 数据操作 23
3.1 变量 23
3.1.1 显式声明与隐式声明 23
3.1.2 组织多个变量 24
3.1.3 变量的命名应遵循的原则 25
3.2 运算 26
3.2.1 算术运算 26
3.2.2 逻辑运算 27
3.3 数组和切片 28
3.4 字典 29
3.5 结构体 30
3.5.1 匿名字段 31
3.5.2 小结 32
3.6 接口 33
3.6.1 error 33
3.6.2 Marshaler 34
3.7 库(包)管理 36
3.7.1 库(包)的导入 36
3.7.2 下载库(包) 36
3.8 项目组织的结构 37
3.8.1 领域驱动的方式 37
3.8.2 业务驱动的方式 38
3.9 本章小结 38
第4章 内置库的常用操作 39
4.1 字符串 39
4.2 bytes 45
4.3 json 47
4.4 io/bufio 48
4.5 fmt 51
4.6 strconv 55
4.7 time 57
4.8 regexp 59
4.9 log 62
4.10 reflect/unsafe 65
4.11 os/path/filepath 69
4.12 unicode 78
4.13 flag 80
4.14 net/url 84
4.15 net/http 87
4.16 sort 94
4.17 error 97
4.18 本章小结 99
第5章 编写图表库 100
5.1 常见的开源图表库 100
5.1.1 ECharts 100
5.1.2 BizCharts 103
5.1.3 chart.js 105
5.1.4 HighCharts 106
5.1.5 小结 108
5.2 模板引擎的使用 108
5.3 使用模板引擎构建图表 111
5.4 基于chart.js构建图表库go-chart 121
5.4.1 项目组织结构 122
5.4.2 模板文件 123
5.4.3 基础数据 124
5.4.4 图表类型 128
5.5 本章小结 132
第6章 编写测试 133
6.1 单元测试 133
6.2 基本的使用 134
6.2.1 常见用法 134
6.2.2 样本测试 135
6.2.3 SetUp/TearDown 136
6.3 表格驱动法测试 136
6.4 第三方库goconvey 137
6.5 解决依赖性问题 140
6.5.1 函数依赖关系 140
6.5.2 数据库的依赖 143
6.6 性能测试 148
6.7 本章小结 150
第7章 网络爬虫 151
7.1 网络爬虫是什么 151
7.2 网页的基本组成 152
7.2.1 HTML 153
7.2.2 Chrome开发者工具的使用 155
7.2.3 小结 162
7.3 原生库解析HTML网页 163
7.4 正则表达式解析网页 165
7.5 网络爬虫的流程 167
7.6 网页源代码的获取 168
7.6.1 原生net/http库 168
7.6.2 Selenium浏览器自动化测试 169
7.6.3 Chromedp渲染 172
7.6.4 小结 174
7.7 CSS选择器解析网页 174
7.7.1 语法 174
7.7.2 下载安装 177
7.7.3 示例 177
7.7.4 小结 185
7.8 XPath路径表达式解析网页 185
7.8.1 语法 185
7.8.2 下载安装 187
7.8.3 示例 188
7.8.4 小结 192
7.9 JSON数据解析 192
7.9.1 JSON数据 192
7.9.2 下载安装 194
7.9.3 v2ex社区实例 195
7.9.4 猫眼票房实例 197
7.10 App端数据的获取 201
7.10.1 Charles的使用 201
7.10.2 Mitmproxy的使用 203
7.10.3 小结 205
7.11 数据存储 206
7.11.1 百度搜索指数实例 206
7.11.2 持久化存储 211
7.11.3 数据库的形式 214
7.12 本章小结 218
第8章 实现命令行工具 219
8.1 优秀的命令行工具的特点 219
8.1.1 Docker 219
8.1.2 Go 221
8.2 命令行工具需要处理的内容 223
8.3 Go实现命令行的几种方式 223
8.3.1 内置的os库 224
8.3.2 内置的flag库 226
8.3.3 使用第三方库cobra实现gitcli 233
8.4 本章小结 250
第9章 动手实现一个库 251
9.1 解决什么问题 251
9.2 解决方案 253
9.2.1 手动处理 253
9.2.2 参考别人的思路 254
9.2.3 自己的思路 258
9.2.4 持续集成 264
9.2.5 拓展 273
9.3 本章小结 273
第10章 Web服务 275
10.1 使用net/http构建简易的Web服务 275
10.1.1 启动Web服务 275
10.1.2 目标 281
10.1.3 模板的使用 281
10.1.4 内容开发 286
10.2 使用net/http构建爱鲜蜂Web服务 317
10.2.1 需求流程梳理 318
10.2.2 模型设计 319
10.2.3 代码开发 325
10.2.4 项目组织结构 339
10.3 本章小结 375
第11章 Web开发手册 376
11.1 再谈HTTP 376
11.2 设计RESTful API 377
11.2.1 资源的访问操作 378
11.2.2 路由的设计 379
11.2.3 参数 379
11.2.4 参数检验 382
11.2.5 响应信息 383
11.3 数据模型 385
11.3.1 GORM方案 387
11.3.2 XORM方案 387
11.3.3 小结 390
11.4 中间件 391
11.4.1 Gin中间件 394
11.4.2 Echo中间件 395
11.4.3 Iris中间件 396
11.4.4 小结 396
11.5 响应信息 396
11.5.1 正确时的响应信息 397
11.5.2 错误时的响应信息 399
11.5.3 小结 399
11.6 项目组织结构 400
11.7 代码管理和托管 402
11.8 Make构建工具 403
11.8.1 语法规范 403
11.8.2 Go项目的命令 405
11.9 容器化部署 406
11.9.1 Docker容器的使用 407
11.9.2 小结 408
11.10 自动CI/CD 408
11.11 本章小结 413
第12章 面向接口编程 414
12.1 开源 414
12.2 搜索引擎的基本使用 415
12.2.1 下载并安装 416
12.2.2 docker-compose配置文件 416
12.2.3 查看安装是否成功 417
12.3 客户端go-elasticsearch的使用 418
12.3.1 下载并安装 418
12.3.2 基本的使用 419
12.4 项目组织的形式 420
12.5 面向接口编程 421
12.6 自己实现,学为己用 432
12.7 本章小结 441
第13章 Go学习路径 442
13.1 内置库 442
13.1.1 访问官方文档 442
13.1.2 文档的组织 442
13.1.3 阅读内置库 444
13.2 版本管理 445
13.2.1 初始化 445
13.2.2 下载 446
13.2.3 移除不需要的模块 446
13.3 测试驱动开发 446
13.4 命令行 447
13.5 Web开发 447
13.6 SQL与ORM 448
13.7 系统工程 448
13.7.1 需求讨论 448
13.7.2 迭代开发/测试 448
13.7.3 代码版本管理 449
13.7.4 持续集成(CI) 449
13.7.5 持续部署(CD) 450
13.7.6 多组件部署 450
13.7.7 监控运维 450