Skip to content

Rockyzsu/Go_Concurrency_Programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

把【go.introduce】目录拷贝到$GOPATH$\src 下,即可运行里面的源码.

《Go并发编程实战》封面

封面

文末后面有目录结构。

顺便建了一个免费的Golang知识星球,分享golang的知识点,纯交流,免费

星球

文章目录结构

第1章 搭建Go开发环境 1

1.1 Go的语言特性 1

1.2 安装 4

1.2.1 Windows下安装Go 5

1.2.2 Linux下安装Go 7

1.3 配置环境变量 7

1.3.1 Windows下的环境变量配置 7

1.3.2 Linux下的环境变量配置 8

1.4 第一个Go程序 9

1.4.1 搭建本书项目代码结构 9

1.4.2 创建并运行第一个Go程序 10

1.4.3 Go程序的编译 11

1.4.4 Go的帮助系统 12

1.5 运行时 15

1.6 编译器 16

1.6.1 词法分析和语法分析 17

1.6.2 类型检查 17

1.6.3 生成SSA中间代码 17

1.6.4 生成机器代码 18

1.7 Go程序的集成开发环境 18

1.8 演练:Exit自动退出程序 23

1.9 本章小结 25

第2章 Go程序的基础要素 26

2.1 命名规范 26

2.2 包 27

2.2.1 包的导入 29

2.2.2 包的嵌套 32

2.2.3 特殊的init函数 33

2.3 数据类型 35

2.3.1 字符串类型 36

2.3.2 数值类型 38

2.3.3 布尔类型 39

2.3.4 派生类型 40

2.4 常量 40

2.5 变量 42

2.6 运算符 44

2.6.1 算术运算符 44

2.6.2 关系运算符 45

2.6.3 逻辑运算符 46

2.6.4 位运算符 47

2.6.5 赋值运算符 48

2.6.6 特殊运算符 49

2.6.7 运算符的优先级 50

2.7 注释 50

2.8 类型转换 51

2.9 演练:原子计算器 54

2.10 小结 55

第3章 函数 56

3.1 函数的结构 57

3.1.1 Go语言函数的基本结构 57

3.1.2 函数中的变量存储(堆栈) 58

3.1.3 函数返回函数 60

3.2 函数返回多个值的特性 61

3.3 作用域 62

3.4 匿名函数 63

3.4.1 匿名函数的即时调用 63

3.4.2 匿名函数的重复调用 64

3.5 变长函数 65

3.6 递归函数 66

3.6.1 使用递归函数求解斐波那契数列 66

3.6.2 使用循环代替递归的方法 67

3.7 回调函数 68

3.8 闭包 70

3.9 defer关键字 71

3.10 演练:原子计算器2.0迭代版 72

3.11 小结 74

第4章 流程控制与错误处理 75

4.1 if判断 75

4.1.1 if语句的基本语法 75

4.1.2 if语句中的变量作用域 77

4.2 switch条件判断语句 78

4.2.1 switch语句中的基本语法 78

4.2.2 fallthrough穿透 80

4.2.3 case多个表达式 81

4.2.4 switch省略判断条件 82

4.3 for循环语句 83

4.4 break与continue 85

4.5 Go的错误处理机制 86

4.5.1 error 86

4.5.2 panic 87

4.6 演练:哲学的三段论 88

4.7 小结 93

第5章 复合数据类型 94

5.1 type关键字 94

5.2 struct类型 97

5.2.1 声明struct 98

5.2.2 struct作为函数的参数 100

5.2.3 给struct定义方法 102

5.2.4 struct嵌套 102

5.3 匿名struct类型 103

5.4 数组 106

5.4.1 创建数组 106

5.4.2 数组作为函数的参数 108

5.4.3 二维数组 110

5.4.4 数组元素是struct 111

5.5 切片 112

5.5.1 切片的内部实现 113

5.5.2 切片的切割 115

5.5.3 切片的扩容 118

5.5.4 切片作为函数的参数 120

5.6 字典 122

5.6.1 创建字典 122

5.6.2 字典作为函数的参数 123

5.7 range关键字 124

5.8 演练:内存数据库 126

5.9 小结 135

第6章 指针 136

6.1 内存地址 136

6.2 指针的应用 141

6.2.1 什么是指针 141

6.2.2 声明指针 142

6.2.3 关键字new 142

6.2.4 获取元素地址 143

6.2.5 unsafe包 145

6.2.6 指针的指针 147

6.3 野指针 148

6.4 值传参与地址传参 149

6.5 演练:Go单向链表的实现 151

6.6 小结 157

第7章 面向对象和接口 158

7.1 结构体实现封装 158

7.2 组合实现继承 161

7.3 接口实现 163

7.4 类型判断与断言 166

7.5 接口实现多态 169

7.6 演练:SQL生成器的实现 171

7.7 小结 179

第8章 文件读写 180

8.1 文件读取 180

8.1.1 整块读取 180

8.1.2 分字节读取 183

8.1.3 分行读取 185

8.2 文件写入 187

8.2.1 整块写入 187

8.2.2 分字节写入 189

8.2.3 分行写入 191

8.3 自己开发io包下的读写接口 192

8.4 目录操作 195

8.4.1 目录的基本操作 195

8.4.2 目录的遍历 197

8.5 演练:property配置文件的操作 198

8.6 小结 200

第9章 图解并发编程 201

9.1 单核并发 202

9.2 锁机制 207

9.3 并行——多核并行 211

9.4 Go调度器 216

9.5 协程 218

9.6 协程间通信 223

9.6.1 共享变量 223

9.6.2 信道 224

9.7 无缓冲信道 225

9.8 有缓冲信道 232

9.9 信道和缓冲生成I/O流 235

9.10 协程调试 236

9.10.1 死锁 236

9.10.2 数据竞争 237

9.10.3 协程泄漏 240

9.11 协程性能测试 244

9.11.1 Go语言自带的测试工具 244

9.11.2 性能测试工具pprof 246

9.11.3 追踪分析工具go tool trace 249

9.12 演练:单机MapReduce单词统计 252

9.13 小结 258

第10章 反射 259

10.1 反射的概念和基本用法 259

10.2 获取结构体字段和方法 265

10.3 反射动态修改值 268

10.4 获取结构体字段标识 270

10.5 判断是否实现接口 272

10.6 动态调用方法 274

10.7 演练:ORM基本实现 276

10.8 小结 282

第11章 Go的Web服务 283

11.1 HTTP/HTTPS 283

11.1.1 HTTP协议原理 284

11.1.2 HTTPS协议原理 285

11.1.3 Go语言的net/http包 286

11.1.4 使用Go语言构建HTTP Web服务程序 287

11.2 WebSocket 294

11.2.1 WebSocket协议原理 294

11.2.2 使用Go语言实现WebSocket服务端 296

11.2.3 使用Go语言实现WebSocket客户端 298

11.3 SSE 299

11.3.1 SSE技术原理 299

11.3.2 使用Go语言实现SSE通信 300

11.4 演练:构建自己的Web服务器 305

11.5 小结 313

第12章 实战:并发聊天 314

12.1 需求描述 314

12.2 需求分析 315

12.3 技术选型 316

12.4 架构 317

12.5 代码分析 319

12.6 小结 334

About

《Go并发编程实战》 一书中的源码 汪明著

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages