Skip to content

Go语言极简一本通:零基础入门到项目实战(博文视点出品)

第一部分 基础知识

第1章 起步 1

1.1 源代码与程序 1

1.2 变量的命名 2

1.3 指针 4

1.4 包和文件 5

1.5 变量的生命周期 6

1.6 作用域 7

第2章 变量与简单类型 9

2.1 运行hello_world.go 9

2.2 变量 10

2.3 字符串 11

2.3.1 修改字符串的大小写 11

2.3.2 合并(拼接)字符串 12

2.3.3 使用制表符或换行符添加空白 13

2.3.4 删除空格 13

2.4 数字 14

2.4.1 整数 15

2.4.2 浮点数 15

2.4.3 使用strconv.Itoa方法避免类型错误 15

2.5 注释 16

2.6 小结 17

第3章 数组 18

3.1 数组简介 18

3.2 初始化数组元素的3种方式 19

3.3 访问数组元素 20

3.4 索引是从0而不是从1开始的 21

3.5 使用数组中的各个值 21

3.6 遍历数组 22

3.7 循环 23

3.8 修改数组中的元素 24

3.9 使用列表时应避免索引错误 24

3.10 小结 25

第4章 切片 26

4.1 切片简介 26

4.1.1 创建切片 27

4.1.2 访问切片元素 30

4.1.3 遍历切片元素 31

4.1.4 复制切片 32

4.2 修改、添加和删除元素 33

4.2.1 修改切片元素 34

4.2.2 在切片中添加元素 34

4.2.3 从切片中删除元素 36

4.3 使用切片时应避免索引错误 37

4.4 遍历切片时容易犯的错误 38

4.5 小结 39

第5章 流程控制 41

5.1 if语句 41

5.2 条件测试 42

5.2.1 检查是否相等 42

5.2.2 比较数字 43

5.2.3 检查多个条件 43

5.2.4 检查在切片中是否包含特定值 44

5.2.5 布尔表达式 44

5.2.6 if-else 结构 45

5.3 switch语句 46

5.4 循环语句 49

5.5 小结 51

第6章 字典 52

6.1 字典简介 52

6.2 创建字典 54

6.3 使用字典 55

6.3.1 访问字典中的值 56

6.3.2 添加键值对 57

6.3.3 修改字典中的值 57

6.3.4 删除键值对 58

6.4 遍历字典 59

6.4.1 在字典中嵌入切片 59

6.4.2 在字典中嵌入字典 61

6.5 避免遍历 61

6.6 小结 63

第7章 函数 64

7.1 定义函数 64

7.1.1 向函数传递信息 67

7.1.2 实际参数和形式参数 67

7.1.3 位置实参 68

7.1.4 传递数组 69

7.1.5 传递切片 70

7.1.6 避免实参错误 71

7.2 返回值 71

7.2.1 返回简单值 71

7.2.2 返回字典 72

7.3 返回多个值 72

7.4 函数变量 75

7.5 匿名函数 78

7.6 闭包 79

7.7 变长函数 81

7.8 延迟函数调用 82

7.9 panic 83

7.10 recover 84

7.11 小结 85

第8章 结构体与方法 86

8.1 结构体概述 86

8.2 结构体的使用 88

8.3 匿名成员与结构体嵌套 89

8.4 结构体与JSON 91

8.5 方法 93

8.6 指针接收者方法 94

8.7 实参接收者type与*type 96

8.8 值方法与指针方法的区别 98

8.9 方法与表达式 100

8.10 小结 100

第9章 接口 102

9.1 接口的定义及使用 102

9.2 非侵入式接口 104

9.3 使用指针接收者实现接口 106

9.4 接口的嵌套 107

9.5 接口值 110

9.6 error接口 112

9.7 类型断言 113

9.8 类型分支 114

9.9 动态类型、动态值和静态类型 114

9.10 小结 118

第二部分 高效并发

第10章 协程与通道 119

10.1 并发 119

10.2 协程并发模型 121

10.3 goroutine(协程)的使用 124

10.4 channel(通道) 125

10.5 channel进阶 126

10.6 单向channel 129

10.7 无缓冲channel 130

10.8 缓冲channel 131

10.9 select 132

10.10 关闭channel 135

10.11 小结 136

第11章 并发资源 137

11.1 竞态 137

11.2 sync.Mutex与sync.RWMutex 139

11.3 条件变量 146

11.4 原子操作 149

11.5 WaitGroup类型与Once类型 152

11.6 context.Context类型 155

11.7 小结 159

第12章 包管理 161

12.1 go mod 161

12.2 go mod中的命令 162

12.3 小结 164

第13章 测试 165

第14章 反射 169

14.1 反射简介 169

14.2 动态调用无参方法 170

14.3 动态调用有参方法 170

14.4 动态struct tag解析 171

14.5 对类型进行转换和赋值 172

14.6 使用Kind与switch处理不同分支 174

14.7 判断是否实现了某接口 175

第三部分 项目实战

第15章 Gin框架 177

15.1 HTTP简介 177

15.2 Gin框架简介 183

15.3 RESTful 184

15.4 路由参数 185

15.5 URL查询参数的获取 186

15.6 接收数组和map 187

15.7 获取Form表单参数 188

15.8 JSON渲染输出 190

第16章 生活点评项目实战 193

16.1 总体需求分析 193

16.2 开发精要 196

16.3 接口设计 197

16.4 餐厅详情模块 198

16.5 数据库访问层 200

16.6 服务层 203

16.7 路由和方法 204

16.8 团购下单模块 204

16.9 数据库访问层 205

16.10 团购下单――服务层 205

16.11 团购下单――路由和方法 206

16.12 小结 208

第17章 账户管理系统实战 209

17.1 启动一个简单的RESTful服务器 209

17.2 Viper 211

17.3 日志追踪 217

17.4 定义错误码 220

17.5 创建账户 224

17.6 删除账户 228

17.7 更新账户 229

17.8 账户列表 231

17.9 根据账户名称查询用户信息 234

17.10 OAuth 2.0简介 236

17.11 OAuth 2.0 的四种授权模式 237

更新: 2021-04-15 13:46:43
原文: https://www.yuque.com/u3641/dxlfpu/brg2z7