内容简介
本书从实践出发讲解Go语言编程的基础阶知识。全书共分为14章,第1~4章讲述Go的基础知识,如基础语法、内置库的使用等,第5~14章介绍编写图表库、实现命令行工具、网络爬虫Web编程、GraphQL编程和面向接口编程等,将Go的核心知识和应用拆分到不同的应用场景行讲解。 本书适合对Go语言的应用已经有基础,并希望能够在Web开发方面、接口编程方面结合Go语言来实阶学术人员学考。
目录
前言第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 /url 84 4.15 / 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 原生/库 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 使用/构建简易的Web服务 275 10.1.1 启动Web服务 275 10.1.2 目标 281 10.1.3 模板的使用 281 10.1.4 内容开发 286 10.2 使用/构建爱鲜蜂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 再谈 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