text: Go语言编程入门与实战技巧
  《Go语言编程入门与实战技巧》是2018年9月电子工业出版社出版的图书，作者是黄靖钧。
  内容提要
  《Go语言编程入门与实战技巧》从内容上分为三大部分，第一部分主要介绍Go语言的基础知识，包括Go语言的安装和开发工具，介绍了Go语言的特性与适合的场景，然后讲解了Go语言的程序结构和数据类型，并针对函数和一些关键字的用法与数据类型的调用原理做了阐述。第二部分介绍了Go语言数据结构和标准库，结合实际应用场景探讨了日常生产环境会遇到的问题与解决办法。第三部分主要介绍Go语言的测试工具和用法，并重点讲解了Go语言的内存管理机制，深入理解Go语言的设计哲学，了解Go语言底层的内存管理和并发机制，为更进一步的学习打下坚实的基础。
  《Go语言编程入门与实战技巧》适合对计算机编程尤其是对Go语言编程感兴趣的新手作为入门教程阅读，还适合想在Web开发领域有所发展的程序员学习
  目录
  第1章 认识Go语言 1
  1.1 Go语言简介 1
  1.1.1 Go语言简史 1
  1.1.2 Go语言特性 2
  1.1.3 谁适合使用Go语言 2
  1.2 Go语言的开发环境部署 3
  1.2.1 Go语言环境变量 3
  1.2.2 在Linux上安装Go语言环境 3
  1.2.3 在Mac OS上安装Go语言环境 5
  1.2.4 在Windows上安装Go语言环境 5
  1.3 Go语言的基本命令及使用 5
  1.3.1 GOROOT结构 6
  1.3.2 GOPATH结构 7
  1.3.3 Go语言命令行参数 8
  1.3.4 第一个Go语言程序 12
  1.4 Go语言的开发工具 14
  1.4.1 Code/Atom 14
  1.4.2 VIM-Go 17
  1.4.3 Gogland 18
  1.4.4 LiteIDE 18
  1.4.5 Cloud IDE 19
  1.5 本章小结 23
  第2章 程序结构 24
  2.1 Go语言程序元素 24
  2.1.1 标识符 24
  2.1.2 关键字 25
  2.1.3 字面量 25
  2.1.4 分隔符 25
  2.1.5 运算符 26
  2.1.6 注释 27
  2.2 Go语言基本概念 28
  2.2.1 常量 28
  2.2.2 变量 32
  2.3 本章小结 37
  第3章 基础数据类型 38
  3.1 整型 39
  3.1.1 整型的表示 39
  3.1.2 整型的运算 39
  3.2 浮点型 41
  3.2.1 浮点型的表示 41
  3.2.2 浮点型的运算 42
  3.2.3 复数 42
  3.3 字符与字符串 44
  3.3.1 字符串的表示 44
  3.3.2 操作字符串 46
  3.3.3 字符串格式化 60
  3.4 布尔型 61
  3.4.1 布尔型的表示 61
  3.4.2 布尔型的运算 62
  3.5 基本数据类型的扩展 63
  3.5.1 强制类型转换 63
  3.5.2 自定义类型 64
  3.5.3 类型别名 64
  3.5.4 指针 65
  3.6 本章小结 69
  第4章 流程控制 70
  4.1 条件语句 70
  4.1.1 if判断 71
  4.1.2 if-else判断 71
  4.1.3 else-if判断 73
  4.1.4 初始化子语句 74
  4.2 选择语句 75
  4.2.1 switch语句 75
  4.2.2 switch初始化语句 78
  4.2.3 select语句 79
  4.3 循环语句 80
  4.3.1 for的子语句 81
  4.3.2 range子语句 82
  4.4 延迟语句 84
  4.5 标签 87
  4.5.1 break 87
  4.5.2 continue 89
  4.5.3 goto 90
  4.6 本章小结 91
  第5章 函数 92
  5.1 认识函数 92
  5.1.1 函数的声明 92
  5.1.2 函数的参数 93
  5.1.3 函数的返回值 94
  5.2 函数的基础 95
  5.2.1 多返回值 96
  5.2.2 函数作为参数 97
  5.2.3 函数作为类型 98
  5.2.4 可变参数 99
  5.2.5 匿名函数与闭包 102
  5.2.6 递归函数 106
  5.2.7 内置函数 108
  5.3 函数进阶 108
  5.3.1 参数传递机制 108
  5.3.2 defer与跟踪 111
  5.3.3 错误与恢复 116
  5.4 本章小结 122
  第6章 复合数据类型 123
  6.1 数组 123
  6.1.1 声明数组 123
  6.1.2 访问与修改 124
  6.1.3 多维数组 126
  6.1.4 将数组传递给函数 127
  6.2 切片 128
  6.2.1 创建数组切片 129
  6.2.2 切片的使用 131
  6.2.3 多维切片 137
  6.2.4 将切片传递给函数 137
  6.3 映射 138
  6.3.1 映射的实现 138
  6.3.2 映射的创建 139
  6.3.3 映射的使用 139
  6.3.4 将映射传递给函数 141
  6.4 本章小结 142
  第7章 包 144
  7.1 包的基础 144
  7.1.1 包的结构 146
  7.1.2 包的导入 147
  7.1.3 包的使用 153
  7.1.4 Go语言工具箱 154
  7.2 自定义包 156
  7.2.1 包的制作 157
  7.2.2 特定平台的代码 157
  7.2.3 godoc生成文档 158
  7.2.4 包的打包与发布 159
  7.2.5 自定义包的导入 164
  7.3 本章小结 165
  第8章 结构体与方法 166
  8.1 结构体 166
  8.1.1 结构体定义 166
  8.1.2 结构体使用 172
  8.1.3 带标签的结构体 175
  8.1.4 匿名字段和内嵌结构体 176
  8.2 类型系统 179
  8.2.1 用户自定义类型 179
  8.2.2 值语义和引用语义 182
  8.3 方法 184
  8.3.1 方法声明 184
  8.3.2 为类型添加方法 187
  8.3.3 工厂方法创建结构体 188
  8.3.4 基于指针对象的方法 190
  8.3.5 方法值和方法表达式 191
  8.3.6 方法和未导出字段 193
  8.3.7 嵌入类型的方法和继承 194
  8.4 本章小结 197
  第9章 接口与反射 198
  9.1 接口 198
  9.1.1 接口是什么 199
  9.1.2 接口类型与约定 204
  9.1.3 接口实现 208
  9.1.4 嵌套接口 210
  9.1.5 接口赋值 211
  9.1.6 接口查询 213
  9.1.7 接口组合 214
  9.2 反射 215
  9.2.1 方法和类型的反射 215
  9.2.2 通过反射修改设置值 216
  9.2.3 反射结构 218
  9.2.4 Printf和反射 220
  9.3 本章小结 222
  第10章 并发编程 223
  10.1 并发编程基础 223
  10.1.1 并发与并行 223
  10.1.2 指定使用核心数 225
  10.2 协程（goroutine） 227
  10.2.1 协程基础 228
  10.2.2 协程间通信 229
  10.3 通道（channel） 231
  10.3.1 基本语法 232
  10.3.2 select 232
  10.3.3 缓冲机制 233
  10.3.4 超时和计时器 234
  10.3.5 channel的传递 235
  10.3.6 单向channel 236
  10.3.7 关闭channel 237
  10.4 并发进阶 237
  10.4.1 多核并行化 237
  10.4.2 协程同步 239
  10.4.3 协程和恢复 242
  10.5 本章小结 243
  第11章 网络编程 244
  11.1 Socket编程 244
  11.1.1 什么是Socket 244
  11.1.2 Dial()函数 246
  11.1.3 ICMP示例 247
  11.1.4 TCP Socket 249
  11.1.5 UDP Socket 253
  11.2 HTTP编程 255
  11.2.1 HTTP客户端 255
  11.2.2 HTTP服务器端 260
  11.3 RPC编程 262
  11.3.1 Go RPC 263
  11.3.2 HTTP RPC 263
  11.3.3 TCP RPC 266
  11.3.4 JSON RPC 268
  11.3.5 RPC接口 271
  11.4 数据库 272
  11.4.1 database/sql接口 272
  11.4.2 使用MySQL数据库 277
  11.4.3 使用SQLite数据库 280
  11.4.4 使用PostgreSQL数据库 282
  11.4.5 NoSQL数据库操作 286
  11.5 Go语言使用Cookie 287
  11.5.1 设置Cookie 287
  11.5.2 读取Cookie 288
  11.6 本章小结 288
  第12章 I/O编程 289
  12.1 输入/输出 289
  12.1.1 io：基本I/O接口 289
  12.1.2 fmt：格式化I/O 292
  12.1.3 文本处理 298
  12.2 文件系统 298
  12.2.1 os：系统功能实现 298
  12.2.2 path：兼容路径操作 299
  12.3 数据结构与算法 303
  12.3.1 排序 304
  12.3.2 container 310
  12.4 本章小结 314
  第13章 文件处理 315
  13.1 文件操作 315
  13.1.1 创建文件与查看状态 316
  13.1.2 重命名与移动 319
  13.1.3 打开与关闭 319
  13.1.4 删除与截断 321
  13.1.5 读写文件 321
  13.1.6 权限控制 325
  13.1.7 文件链接 328
  13.2 XML处理 330
  13.2.1 解析XML 330
  13.2.2 生成XML 333
  13.3 JSON处理 336
  13.3.1 解析JSON 336
  13.3.2 生成JSON 338
  13.4 日志记录 340
  13.4.1 Logrus 341
  13.4.2 Seelog 342
  13.5 压缩 343
  13.5.1 打包与解包 343
  13.5.2 压缩与解压 345
  13.6 本章小结 347
  第14章 安全与测试 348
  14.1 安全 348
  14.1.1 安全相关的基础概念 348
  14.1.2 通信安全 350
  14.2 测试 354
  14.2.1 单元测试 354
  14.2.2 基准测试 362
  14.3 本章小结 368
  第15章 内存管理 369
  15.1 内存分配 369
  15.1.1 内存管理基本概念 369
  15.1.2 逃逸分析 373
  15.2 TCMalloc 376
  15.2.1 整体结构 377
  15.2.2 小内存分配 378
  15.2.3 CentralCache 379
  15.2.4 大内存分配 381
  15.3 M（内存管理器） 384
  15.4 垃圾回收 398
  15.4.1 标记清理算法 399
  15.4.2 标记实现 403
  15.4.3 清理 406
  15.4.4 监控 408
  15.5 本章小结 408
  作者简介
  黄靖钧：全栈开发者，长期以来一直使用Go语言开发网络应用，在Go语言编程方面经验丰富。热衷开源，深度参与Docker及其生态建设，积极为Potainer等众多著名项目贡献代码。曾任PaaS与CaaS等类型项目的后端Go开发，现从事基础设施架构与数据中心开发工作，专注高并发、微服务领域的研究。