欢迎光临
免费的PDF电子书下载网站

Go语言编程三部曲:GO语言实战+GO语言高级编程+GO web编程 PDF下载

编辑推荐

这是一套专门写给Go语言开发者的从入门到实践的教程书籍。《Go语言实战》编辑推荐即便不处理类似可扩展的Web 并发或者实时性能等复杂的系统编程问题,应用程序开发也是一件非常困难的事情。尽管使用一些工具和框架也可以解决这些常见的问题,但Go 语言却以一种更加自然且高效的方式正确处理了这类问题。由谷歌公司开发的Go 语言,为在基础设施中非常依赖高性能服务的初创公司和大企业提供了足够的能力。Go语言实战目标读者是已经有一定其他编程语言经验,想要开始学习Go 语言或者更深入了解Go 语言及其内部机制的中级开发 者。本书会提供一个专注、全面且符合习惯的视角。本书关注Go 语言的规范和实现,涉及的内容包括语法、Go 的类型系统、并发、通道和测试等主题。Go语言实战 主要内容● Go语言规范和实现。● Go语言的类型系统。● Go语言的数据结构的内部实现。

这是一套专门写给Go语言开发者的从入门到实践的教程书籍。

《Go语言实战》编辑推荐

即便不处理类似可扩展的Web 并发或者实时性能等复杂的系统编程问题,应用程序开发也是一件非常困难的事情。尽管使用一些工具和框架也可以解决这些常见的问题,但Go 语言却以一种更加自然且高效的方式正确处理了这类问题。由谷歌公司开发的Go 语言,为在基础设施中非常依赖高性能服务的初创公司和大企业提供了足够的能力。

Go语言实战目标读者是已经有一定其他编程语言经验,想要开始学习Go 语言或者更深入了解Go 语言及其内部机制的中级开发 者。本书会提供一个专注、全面且符合习惯的视角。本书关注Go 语言的规范和实现,涉及的内容包括语法、Go 的类型系统、并发、通道和测试等主题。

Go语言实战 主要内容

● Go语言规范和实现。

● Go语言的类型系统。

● Go语言的数据结构的内部实现。

● 测试和基准测试。

Go语言实战假设读者是熟练使用其他语言(如Java、Ruby、Python、C# 或者C )的开发 者。

《Go语言高级编程》编辑推荐

截至2019年,Go语言已历经10 年,国内互联网公司的新兴项目已经在逐渐向Go语言生态转移。随着用户的不断积累,Go语言相关教程随之增加,这些教程主要涵盖Go语言基础编程、Web编程、并发编程和内部源码剖析等诸多内容。

本书聚焦于主流Go语言书中缺失的或刻意回避的部分主题,主要面向希望深入了解Go语言,特别是对Go语言和其他语言的混合编程、Go汇编语言的工作机制、构造Web框架和分布式开发等领域感兴趣的学生、工程师和研究人员。阅读本书需要读者对Go语言有一定的认识和使用经验。

本书关于CGO编程和Go汇编语言的讲解在中国乃至全球Go语言出版物中是非常有特色的。

本书主要内容

● Go语言演化历史。

● CGO编程技术。

● Go汇编语言。

● RPC和gRPC。

● 构造Web框架的方法。

● 分布式系统。

《Go web编程》编辑推荐

Go语言通过提供整洁快速的编译代码、垃圾回收、简单的并发Go模型以及丰富的标准库来满足人们对于可扩展、高性能Web 应用的需求,这种语言非常适用于编写微服务,又或者用于构建可扩展且可维护的系统。

本书将教读者运用现代化设计理念构建Go Web应用的方法。阅读本书能让读者学会如何通过依赖注入设计模式来编写测试替身,如何在Web应用中使用并发特性,还有如何在Web服务中创建以及处理JSON数据和XML数据。除此之外,读者还将学会如何尽可能地减少应用对外部框架的依赖,并了解大量与应用测试以及应用部署有关的有价值的生产技术。

本书主要内容

● 基础知识。

● 功能测试和基准测试。

● 并发特性的使用方法。

● 将应用部署到独立服务器、PaaS云端以及 Docker 的方法。

● 大量提示、窍门以及技巧。

本书假设读者熟悉Go语言的基本语法并了解Web 开发的一般概念。

 

 

内容简介

《Go语言实战》内容简介Go语言结合了底层系统语言的能力以及现代语言的高 级特性,旨在降低构建简单、可靠、高效软件的门槛。本书向读者提供一个专注、全面且符合语言习惯的视角。Go语言实战同时关注语言的规范和实现,涉及的内容包括语法、类型系统、并发、管道、测试,以及其他一些主题。《Go语言高级编程》内容简介

《Go语言实战》内容简介

Go语言结合了底层系统语言的能力以及现代语言的高 级特性,旨在降低构建简单、可靠、高效软件的门槛。本书向读者提供一个专注、全面且符合语言习惯的视角。Go语言实战同时关注语言的规范和实现,涉及的内容包括语法、类型系统、并发、管道、测试,以及其他一些主题。

《Go语言高级编程》内容简介
本书从实践出发讲解Go语言的进阶知识。本书共6章,第1章简单回顾Go语言的发展历史;第2章和第3章系统地介绍CGO编程和Go汇编语言的用法;第4章对RPC和Protobuf技术进行深入介绍,并讲述如何打造一个自己的RPC系统;第5章介绍工业级环境的Web系统的设计和相关技术;第6章介绍Go语言在分布式领域的一些编程技术。书中还涉及CGO和汇编方面的知识,其中CGO能够帮助读者继承的软件遗产,而在深入学习Go运行时,汇编对于理解各种语法设计的底层实现是必不可少的知识。此外,本书还包含一些紧跟潮流的内容,介绍开源界流行的gRPC及其相关应用,讲述Go Web框架中的基本实现原理和大型Web项目中的技术要点,引导读者对Go语言进行更深入的应用。

本书适合对Go语言的应用已经有一些心得,并希望能够深入理解底层实现原理或者是希望能够在Web开发方面结合Go语言来实现进阶学习的技术人员学习和参考。

《Go Web编程》内容简介
本书全面介绍使用Go语言开发Web应用所需的全部基本概念,并详细讲解如何运用现代设计原则使用Go语言构建Web应用。本书通过大量的实例介绍核心概念(如处理请求和发送响应、模板引擎和数据持久化),并深入讨论更多高 级主题(如并发、Web应用程序测试以及部署到标准系统服务器和PaaS提供商)。

本书以一个网络论坛为例,讲解如何使用请求处理器、多路复用器、模板引擎、存储系统等核心组件构建一个Go Web应用,然后在这一应用的基础上,构建出相应的Web服务。值得一提的是,本书在介绍Go Web开发方法时,基本上只用到Go语言自带的标准库,而不会用到任何特定的Web框架,读者学到的知识将不会局限于特定的框架,即使将来需要用到现成的框架或者自行构建框架,仍然会从本书中获益。本书除了讲解具体的Web开发方法,还介绍如何对Go Web应用进行测试,如何使用Go的并发特性提高Web应用的性能,以及如何在Heroku、Google App Engine、Digital Ocean等云平台上部署Go Web应用;此外,书中还传授一些Go Web开发方面的经验和提示。这些重要的实践知识将帮助读者快速成为真正具有生产力的Go Web开 发者。

阅读本书需要读者具备基本的Go语言编程技能并掌握Go语言的语法。本书适合所有想用Go语言进行Web开发的读者阅读,无论是Web开发的初学者还是入行已久的开 发者都会在阅读本书的过程中有所收获。

 

作者简介

暂无

Go语言编程三部曲:GO语言实战+GO语言高级编程+GO web编程 PDF下载

目录

《Go语言实战》

第 1章 关于Go语言的介绍 1

1.1 用Go解决现代编程难题 2

1.1.1 开发速度 2

1.1.2 并发 3

1.1.3 Go语言的类型系统 5

1.1.4 内存管理 7

1.2 你好,Go 7

1.3 小结 8

第 2章 快速开始一个Go程序 9

2.1 程序架构 9

2.2 main包 11

2.3 search包 13

2.3.1 search.go 13

2.3.2 feed.go 21

2.3.3 match.go/default.go 24

2.4 RSS匹配器 30

2.5 小结 36

第3章 打包和工具链 37

3.1 包 37

3.1.1 包名惯例 38

3.1.2 main包 38

3.2 导入 39

3.2.1 远程导入 40

3.2.2 命名导入 40

3.3 函数init 41

3.4 使用Go的工具 42

3.5 进一步介绍Go开发工具 44

3.5.1 go vet 44

3.5.2 Go代码格式化 45

3.5.3 Go语言的文档 45

3.6 与其他Go开发 者合作 48

3.7 依赖管理 48

3.7.1 第三方依赖 49

3.7.2 对gb的介绍 50

3.8 小结 52

第4章 数组、切片和映射 53

4.1 数组的内部实现和基础功能 53

4.1.1 内部实现 53

4.1.2 声明和初始化 54

4.1.3 使用数组 55

4.1.4 多维数组 58

4.1.5 在函数间传递数组 59

4.2 切片的内部实现和基础功能 60

4.2.1 内部实现 60

4.2.2 创建和初始化 61

4.2.3 使用切片 63

4.2.4 多维切片 74

4.2.5 在函数间传递切片 75

4.3 映射的内部实现和基础功能 76

4.3.1 内部实现 76

4.3.2 创建和初始化 78

4.3.3 使用映射 79

4.3.4 在函数间传递映射 81

4.4 小结 82



第5章 Go语言的类型系统 83

5.1 用户定义的类型 83

5.2 方法 87

5.3 类型的本质 90

5.3.1 内置类型 91

5.3.2 引用类型 91

5.3.3 结构类型 93

5.4 接口 95

5.4.1 标准库 96

5.4.2 实现 98

5.4.3 方法集 99

5.4.4 多态 103

5.5 嵌入类型 105

5.6 公开或未公开的标识符 113

5.7 小结 121

第6章 并发 122

6.1 并发与并行 122

6.2 goroutine 125

6.3 竞争状态 132

6.4 锁住共享资源 135

6.4.1 原子函数 135

6.4.2 互斥锁 138

6.5 通道 140

6.5.1 无缓冲的通道 141

6.5.2 有缓冲的通道 146

6.6 小结 149

第7章 并发模式 150

7.1 runner 150

7.2 pool 158

7.3 work 168

7.4 小结 174

第8章 标准库 176

8.1 文档与源代码 177

8.2 记录日志 178

8.2.1 log包 179

8.2.2 定制的日志记录器 182

8.2.3 结论 186

8.3 编码/解码 187

8.3.1 解码JSON 187

8.3.2 编码JSON 192

8.3.3 结论 193

8.4 输入和输出 193

8.4.1 Writer和Reader接口 194

8.4.2 整合并完成工作 195

8.4.3 简单的curl 199

8.4.4 结论 200

8.5 小结 200

第9章 测试和性能 201

9.1 单元测试 201

9.1.1 基础单元测试 202

9.1.2 表组测试 205

9.1.3 模仿调用 208

9.1.4 测试服务端点 212

9.2 示例 217

9.3 基准测试 220

9.4 小结 224



《Go语言高级编程》目  录



第 1章 语言基础 1

1.1 Go语言创世纪 1

1.1.1 来自贝尔实验室特有基因 3

1.1.2 你好,世界 4

1.2 “Hello, World”的革命 5

1.2.1 B语言——Ken Thompson, 1969 5

1.2.2 C语言——Dennis Ritchie,1972—1989 5

1.2.3 Newsqueak——Rob Pike, 1989 7

1.2.4 Alef——Phil Winterbottom, 1993 9

1.2.5 Limbo——Sean Dorward, Phil Winterbottom, Rob Pike, 1995 10

1.2.6 Go语言——2007—2009 11

1.2.7 你好,世界!——V2.0 13

1.3 数组、字符串和切片 13

1.3.1 数组 14

1.3.2 字符串 17

1.3.3 切片 21

1.4 函数、方法和接口 27

1.4.1 函数 27

1.4.2 方法 31

1.4.3 接口 35

1.5 面向并发的内存模型 39

1.5.1 Goroutine和系统线程 40

1.5.2 原子操作 40

1.5.3 顺序一致性内存模型 44

1.5.4 初始化顺序 45

1.5.5 Goroutine的创建 46

1.5.6 基于通道的通信 46

1.5.7 不靠谱的同步 48

1.6 常见的并发模式 49

1.6.1 并发版本的“Hello, World” 50

1.6.2 生产者/消费者模型 52

1.6.3 发布/订阅模型 53

1.6.4 控制并发数 56

1.6.5 赢者为王 57

1.6.6 素数筛 58

1.6.7 并发的安全退出 59

1.6.8 context包 62

1.7 错误和异常 64

1.7.1 错误处理策略 65

1.7.2 获取错误的上下文 67

1.7.3 错误的错误返回 69

1.7.4 剖析异常 70

1.8 补充说明 73

第 2章 CGO编程 74

2.1 快速入门 74

2.1.1 最简CGO程序 74

2.1.2 基于C标准库函数输出字符串 75

2.1.3 使用自己的C函数 75

2.1.4 C代码的模块化 76

2.1.5 用Go重新实现C函数 77

2.1.6 面向C接口的Go编程 78

2.2 CGO基础 79

2.2.1 import "C"语句 79

2.2.2 #cgo语句 81

2.2.3 build标志条件编译 82

2.3 类型转换 83

2.3.1 数值类型 83

2.3.2 Go字符串和切片 85

2.3.3 结构体、联合和枚举类型 86

2.3.4 数组、字符串和切片 89

2.3.5 指针间的转换 91

2.3.6 数值和指针的转换 92

2.3.7 切片间的转换 93

2.4 函数调用 94

2.4.1 Go调用C函数 94

2.4.2 C函数的返回值 94

2.4.3 void函数的返回值 95

2.4.4 C调用Go导出函数 96

2.5 内部机制 97

2.5.1 CGO生成的中间文件 97

2.5.2 Go调用C函数 98

2.5.3 C调用Go函数 101

2.6 实战:封装qsort 103

2.6.1 认识qsort()函数 103

2.6.2 将qsort()函数从Go包导出 104

2.6.3 改进:闭包函数作为比较函数 106

2.6.4 改进:消除用户对unsafe包的依赖 108

2.7 CGO内存模型 110

2.7.1 Go访问C内存 110

2.7.2 C临时访问传入的Go内存 111

2.7.3 C长期持有Go指针对象 113

2.7.4 导出C函数不能返回Go内存 115

2.8 C 类包装 117

2.8.1 C 类到Go语言对象 117

2.8.2 Go语言对象到C 类 121

2.8.3 彻底解放C 的this指针 125

2.9 静态库和动态库 126

2.9.1 使用C静态库 126

2.9.2 使用C动态库 128

2.9.3 导出C静态库 129

2.9.4 导出C动态库 131

2.9.5 导出非main包的函数 131

2.10 编译和链接参数 133

2.10.1 编译参数:CFLAGS/CPPFLAGS/CXXFLAGS 133

2.10.2 链接参数:LDFLAGS 133

2.10.3 pkg-config 133

2.10.4 go get链 134

2.10.5 多个非main包中导出C函数 135

2.11 补充说明 135

第3章 Go汇编语言 136

3.1 快速入门 136

3.1.1 实现和声明 136

3.1.2 定义整数变量 137

3.1.3 定义字符串变量 138

3.1.4 定义main()函数 141

3.1.5 特殊字符 141

3.1.6 没有分号 142

3.2 计算机结构 142

3.2.1 图灵机和BrainFuck语言 143

3.2.2 《人力资源机器》游戏 144

3.2.3 X86-64体系结构 145

3.2.4 Go汇编中的伪寄存器 146

3.2.5 X86-64指令集 147

3.3 常量和全局变量 150

3.3.1 常量 150

3.3.2 全局变量 150

3.3.3 变量的内存布局 156

3.3.4 标识符规则和特殊标志 157

3.3.5 小结 158

3.4 函数 158

3.4.1 基本语法 158

3.4.2 函数参数和返回值 160

3.4.3 参数和返回值的内存布局 161

3.4.4 函数中的局部变量 163

3.4.5 调用其他函数 165

3.4.6 宏函数 166

3.5 控制流 167

3.5.1 顺序执行 167

3.5.2 if/goto跳转 169

3.5.3 for循环 171

3.6 再论函数 172

3.6.1 函数调用规范 172

3.6.2 高级汇编语言 173

3.6.3 PCDATA和FUNCDATA 176

3.6.4 方法函数 177

3.6.5 递归函数: 1到n求和 178

3.6.6 闭包函数 180

3.7 汇编语言的威力 182

3.7.1 系统调用 182

3.7.2 直接调用C函数 184

3.7.3 AVX指令 185

3.8 例子:Goroutine ID 187

3.8.1 故意设计没有goid 187

3.8.2 纯Go方式获取goid 187

3.8.3 从g结构体获取goid 189

3.8.4 获取g结构体对应的接口对象 190

3.8.5 goid的应用:局部存储 192

3.9 Delve调试器 194

3.9.1 Delve入门 194

3.9.2 调试汇编程序 198

3.10 补充说明 201

第4章 RPC和Protobuf 203

4.1 RPC入门 203

4.1.1 RPC版“Hello, World” 203

4.1.2 更安全的RPC接口 205

4.1.3 跨语言的RPC 207

4.1.4 HTTP上的RPC 209

4.2 Protobuf 210

4.2.1 Protobuf入门 210

4.2.2 定制代码生成插件 212

4.2.3 自动生成完整的RPC代码 215

4.3 玩转RPC 218

4.3.1 客户端RPC的实现原理 218

4.3.2 基于RPC实现监视功能 220

4.3.3 反向RPC 222

4.3.4 上下文信息 223

4.4 gRPC入门 224

4.4.1 gRPC技术栈 225

4.4.2 gRPC入门 225

4.4.3 gRPC流 227

4.4.4 发布和订阅模式 229

4.5 gRPC进阶 233

4.5.1 证书认证 233

4.5.2 Token认证 236

4.5.3 截取器 238

4.5.4 和Web服务共存 240

4.6 gRPC和Protobuf扩展 241

4.6.1 验证器 241

4.6.2 REST接口 244

4.6.3 Nginx 246

4.7 pbgo:基于Protobuf的框架 246

4.7.1 Protobuf扩展语法 246

4.7.2 插件中读取扩展信息 248

4.7.3 生成REST代码 249

4.7.4 启动REST服务 250

4.8 grpcurl工具 251

4.8.1 启动反射服务 251

4.8.2 查看服务列表 252

4.8.3 服务的方法列表 253

4.8.4 获取类型信息 253

4.8.5 调用方法 254

4.9 补充说明 255

第5章 Go和Web 256

5.1 Web开发简介 256

5.2 请求路由 260

5.2.1 httprouter 260

5.2.2 原理 262

5.2.3 压缩检索树创建过程 263

5.3 中间件 267

5.3.1 代码泥潭 267

5.3.2 使用中间件剥离非业务逻辑 269

5.3.3 更优雅的中间件写法 272

5.3.4 哪些事情适合在中间件中做 273

5.4 请求校验 274

5.4.1 重构请求校验函数 275

5.4.2 用请求校验器解放体力劳动 276

5.4.3 原理 277

5.5 Database 和数据库打交道 279

5.5.1 从database/sql讲起 279

5.5.2 提高生产效率的ORM和

SQL Builder 281

5.5.3 脆弱的数据库 283

5.6 服务流量限制 285

5.6.1 常见的流量限制手段 287

5.6.2 原理 289

5.6.3 服务瓶颈和 QoS 291

5.7 常见大型Web项目分层 291

5.8 接口和表驱动开发 297

5.8.1 业务系统的发展过程 297

5.8.2 使用函数封装业务流程 298

5.8.3 使用接口来做抽象 298

5.8.4 接口的优缺点 301

5.8.5 表驱动开发 303

5.9 灰度发布和A/B测试 303

5.9.1 通过分批次部署实现灰度发布 304

5.9.2 通过业务规则进行灰度发布 305

5.9.3 如何实现一套灰度发布系统 306

5.10 补充说明 310

第6章 分布式系统 311

6.1 分布式ID生成器 311

6.1.1 worker_id分配 312

6.1.2 开源实例 313

6.2 分布式锁 316

6.2.1 进程内加锁 317

6.2.2 尝试锁 317

6.2.3 基于Redis的setnx 319

6.2.4 基于ZooKeeper 321

6.2.5 基于etcd 321

6.2.6 如何选择合适的锁 322

6.3 延时任务系统 323

6.3.1 定时器的实现 323

6.3.2 任务分发 325

6.3.3 数据再平衡和幂等考量 326

6.4 分布式搜索引擎 327

6.4.1 搜索引擎 328

6.4.2 异构数据同步 336

6.5 负载均衡 337

6.5.1 常见的负载均衡思路 337

6.5.2 基于洗牌算法的负载均衡 338

6.5.3 ZooKeeper集群的随机节点挑选问题 340

6.5.4 负载均衡算法效果验证 340

6.6 分布式配置管理 341

6.6.1 场景举例 341

6.6.2 使用etcd实现配置更新 342

6.6.3 配置膨胀 345

6.6.4 配置版本管理 345

6.6.5 客户端容错 345

6.7 分布式爬虫 346

6.7.1 基于colly的单机爬虫 346

6.7.2 分布式爬虫 347

6.7.3 结合nats和colly的消息生产 350

6.7.4 结合colly的消息消费 352

6.8 补充说明 353

附录A 使用Go语言常遇到的问题 354

附录B 有趣的代码片段 363




《Go Web编程》目录
第 一部分 Go与Web应用

第 1章 Go与Web应用  3

1.1 使用Go语言构建Web应用  3

1.1.1 Go与可扩展Web应用  4

1.1.2 Go与模块化Web应用  4

1.1.3 Go与可维护的Web应用  5

1.1.4 Go与高性能Web应用  5

1.2 Web应用的工作原理  6

1.3 HTTP简介  7

1.4 Web应用的诞生  8

1.5 HTTP请求  9

1.5.1 请求方法  10

1.5.2 安全的请求方法  11

1.5.3 幂等的请求方法  11

1.5.4 浏览器对请求方法的支持  11

1.5.5 请求首部  12

1.6 HTTP响应  13

1.6.1 响应状态码  13

1.6.2 响应首部  14

1.7 URI  15

1.8 HTTP/2简介  16

1.9 Web应用的各个组成部分  16

1.9.1 处理器  17

1.9.2 模板引擎  18

1.10 Hello Go  18

1.11  小结  21



第 2章  ChitChat论坛  23

2.1 ChitChat简介  23

2.2 应用设计  24

2.3 数据模型  26

2.4 请求的接收与处理  27

2.4.1 多路复用器  27

2.4.2 服务静态文件  29

2.4.3 创建处理器函数  29

2.4.4 使用cookie进行访问控制  30

2.5 使用模板生成HTML响应  33

2.6 安装PostgreSQL  38

2.6.1 在Linux或FreeBSD系统上安装  38

2.6.2 在Mac OS X系统上安装  39

2.6.3 在Windows系统上安装  39

2.7 连接数据库  39

2.8 启动服务器  44

2.9 Web应用运作流程回顾  45

2.10 小结  46



第 二部分 Web应用的基本组成部分

第3章  接收请求  49

3.1 Go的net/http标准库  49

3.2 使用Go构建服务器  51

3.2.1 Go Web服务器  51

3.2.2 通过HTTPS提供服务  53

3.3 处理器和处理器函数  56

3.3.1 处理请求  56

3.3.2 使用多个处理器  58

3.3.3 处理器函数  59

3.3.4 串联多个处理器和处理器函数  61

3.3.5 ServeMux和DefaultServeMux  65

3.3.6 使用其他多路复用器  66

3.4 使用HTTP/2  68

3.5 小结  70



第4章  处理请求  72

4.1 请求和响应  72

4.1.1 Request结构  73

4.1.2 请求URL  73

4.1.3 请求首部  74

4.1.4 请求主体  76

4.2 Go与HTML表单  77

4.2.1 Form字段  79

4.2.2 PostForm字段  80

4.2.3 MultipartForm字段  81

4.2.4 文件  83

4.2.5 处理带有JSON主体的POST请求  85

4.3 ResponseWriter  86

4.4 cookie  91

4.4.1 Go与cookie 91

4.4.2 将cookie发送到浏览器  92

4.4.3 从浏览器里面获取cookie  94

4.4.4 使用cookie实现闪现消息  96

4.5 小结  99



第5章  内容展示  100

5.1 模板引擎  100

5.2 Go的模板引擎  102

5.2.1 对模板进行语法分析  104

5.2.2 执行模板  105

5.3 动作  106

5.3.1 条件动作  106

5.3.2 迭代动作  108

5.3.3 设置动作  109

5.3.4 包含动作  111

5.4 参数、变量和管道  113

5.5  函数  114

5.6 上下文感知  116

5.6.1 防御XSS攻击  119

5.6.2 不对HTML进行转义  121

5.7 嵌套模板  122

5.8 通过块动作定义默认模板  126

5.9 小结  127



第6章  存储数据  128

6.1 内存存储  128

6.2 文件存储  131

6.2.1 读取和写入CSV文件  133

6.2.2 gob包  135

6.3 Go与SQL  137

6.3.1 设置数据库  138

6.3.2 连接数据库  140

6.3.3 创建帖子  142

6.3.4 获取帖子  144

6.3.5 更新帖子  145

6.3.6 删除帖子  145

6.3.7 一次获取多篇帖子  146

6.4 Go与SQL的关系  147

6.4.1 设置数据库  147

6.4.2 一对多关系  150

6.5 Go与关系映射器  152

6.5.1 Sqlx  152

6.5.2 Gorm  154

6.6 小结  157



第三部分 实战演练

第7章  Go Web服务  161

7.1 Web服务简介  161

7.2 基于SOAP的Web服务简介  163

7.3 基于REST的Web服务简介  166

7.3.1 将动作转换为资源  168

7.3.2 将动作转换为资源的属性  169

7.4 通过Go分析和创建XML  169

7.4.1 分析XML  169

7.4.2 创建XML  177

7.5 通过Go分析和创建JSON  180

7.5.1 分析JSON  181

7.5.2 创建JSON  184

7.6 创建Go Web服务  187

7.7 小结  194



第8章  应用测试  196

8.1 Go与测试  196

8.2 使用Go进行单元测试  197

8.2.1 跳过测试用例  201

8.2.2 以并行方式运行测试  202

8.2.3 基准测试  203

8.3 使用Go进行HTTP测试  206

8.4 测试替身以及依赖注入  210

8.5 第三方Go测试库  217

8.5.1 Gocheck测试包简介  217

8.5.2 Ginkgo测试框架简介  223

8.6 小结  228



第9章  发挥Go的并发优势  230

9.1 并发与并行的区别  230

9.2 goroutine  232

9.2.1 使用goroutine  232

9.2.2 goroutine与性能  235

9.2.3 等待goroutine  238

9.3 通道  239

9.3.1 通过通道实现同步  240

9.3.2 通过通道实现消息传递  242

9.3.3 有缓冲通道  243

9.3.4 从多个通道中选择  244

9.4 在Web应用中使用并发  247

9.4.1 创建马赛克图片  248

9.4.2 马赛克图片Web应用  251

9.4.3 并发版马赛克图片生成Web应用  254

9.5 小结  262



第 10章  Go的部署  263

10.1 将应用部署到独立的 服务器  264

10.2 将应用部署到 Heroku  270

10.3 将应用部署到Google App Engine  273

10.4 将应用部署到 Docker  278

10.4.1 什么是Docker  278

10.4.2 安装Docker  279

10.4.3 Docker的理念与 组件  280

10.4.4 Docker化一个Go Web 应用  281

10.4.5 将Docker容器推送到 互联网  283

10.5 部署方法之间的 对比  286

10.6 小结  287



附录  安装和设置Go  288

 

Go语言编程三部曲:GO语言实战+GO语言高级编程+GO web编程 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:Go语言编程三部曲:GO语言实战+GO语言高级编程+GO web编程