《深入学习Go语言》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:(中国)李晓钧
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2019
  • ISBN:9787111630722
  • 页数:260 页
图书介绍:Go语言适合用来进行服务器编程与网络编程, 包括 Web 应用编程等等。使用 Go 语言开发不断增长,主要云基础项目如 Docker 和 Kubernetes,都取得了巨大成功。本书详细讲解了 Go 语言数据类型、关键字、字面量、基本语法等基础概念,同时可了解 Go 项目的工程构建,测试,编译与运行等;通过对协程(gorountine)和通道(channel)的深入了解,可轻松进行并发编程;通过对系统标准包的学习可以体会到,组合思想借助于 struct 和 interface 两者而成为 Go 的灵魂;而结合开源第三方库,则进入到实际项目开发。

第1章 Go语言简介 1

1.1 为什么要学Go语言 1

1.2 Go语言安装 1

1.3 Go语言开发工具 4

第2章 Go语言编程基础 6

2.1 数据类型 6

2.1.1 基础数据类型 6

2.1.2 复合数据类型 8

2.2 变量 9

2.2.1 变量以及声明 9

2.2.2 零值(nil) 13

2.3 常量 14

2.3.1 常量定义 14

2.3.2 iota 15

2.3.3 字面量(literal) 16

2.4 运算符 18

2.4.1 内置运算符 18

2.4.2 运算符优先级 21

2.4.3 几个特殊运算符 21

2.5 字符串 22

2.5.1 字符串介绍 22

2.5.2 字符串拼接 24

2.5.3 字符串处理 25

2.6 流程控制 26

2.6.1 switch语句 26

2.6.2 select语句 29

2.6.3 for语句 30

2.6.4 for-range结构 31

2.6.5 if语句 33

2.6.6 break语句 33

2.6.7 continue语句 34

2.6.8 标签 35

2.6.9 goto语句 35

第3章 作用域 37

3.1 关于作用域 37

3.1.1 局部变量与全局变量 37

3.1.2 显式与隐式代码块 37

3.2 约定和惯例 40

3.2.1 可见性规则 40

3.2.2 命名规范以及语法惯例 40

3.2.3 注释 41

第4章 代码结构化与项目管理 43

4.1 包(package) 43

4.1.1 包的概念 43

4.1.2 包的初始化 43

4.1.3 包的导入 44

4.1.4 标准库 45

4.1.5 从GitHub安装包 46

4.1.6 导入外部安装包 46

4.2 Go项目开发与编译 46

4.2.1 项目结构 46

4.2.2 使用Godoc 47

4.2.3 Go程序的编译 48

4.2.4 Go modules包依赖管理 49

第5章 复合数据类型 54

5.1 数组(array) 54

5.1.1 数组定义 54

5.1.2 数组声明与使用 54

5.2 切片(slice) 56

5.2.1 切片介绍 56

5.2.2 切片重组(reslice) 58

5.2.3 陈旧的切片(Stale Slices) 59

5.3 字典(map) 60

5.3.1 字典介绍 60

5.3.2 range语句中的值 61

第6章 type关键字 63

6.1 type自定义类型 63

6.2 type定义类型别名 64

第7章 错误处理与defer 66

7.1 错误处理 66

7.1.1 错误类型(error) 66

7.1.2 panic 66

7.1.3 recover 68

7.2 关于defer 68

7.2.1 defer的三个规则 68

7.2.2 使用defer计算函数执行时间 73

第8章 函数 74

8.1 函数(function) 74

8.1.1 函数介绍 74

8.1.2 函数调用 76

8.1.3 内置函数 76

8.1.4 递归与回调 80

8.1.5 匿名函数 81

8.1.6 变参函数 84

第9章 结构体和接口 86

9.1 结构体(struct) 86

9.1.1 结构体介绍 86

9.1.2 结构体特性 88

9.1.3 匿名字段 89

9.1.4 嵌入与聚合 90

9.1.5 命名冲突 93

9.2 接口(interface) 94

9.2.1 接口是什么 94

9.2.2 接口嵌入 96

9.2.3 类型断言 97

9.2.4 接口与动态类型 99

9.2.5 接口的提取 100

9.2.6 接口的继承 100

第10章 方法 101

10.1 方法的定义 101

10.1.1 接收器(receiver) 101

10.1.2 方法表达式与方法值 104

10.1.3 自定义类型方法与匿名嵌入 105

10.1.4 函数和方法的区别 108

10.2 指针方法与值方法 108

10.2.1 指针方法与值方法的区别 108

10.2.2 接口变量上的指针方法与值方法 111

10.2.3 指针接收器和值接收器的选择 114

10.3 匿名类型的方法提升 114

10.3.1 匿名类型的方法调用 114

10.3.2 方法提升规则 115

第11章 面向对象与内存 118

11.1 面向对象 118

11.1.1 Go语言中的面向对象 118

11.1.2 多重继承 119

11.2 指针和内存 119

11.2.1 指针 119

11.2.2 new()和make()的区别 121

11.2.3 垃圾回收 121

第12章 并发处理 124

12.1 协程 124

12.1.1 协程与并发 124

12.1.2 协程使用 127

12.2 通道(channel) 127

12.3 同步与锁 131

12.3.1 互斥锁 132

12.3.2 读写锁 135

12.3.3 sync.WaitGroup 136

12.3.4 sync.Once 137

12.3.5 sync.Map 138

第13章 测试与调优 140

13.1 测试 140

13.1.1 单元测试 140

13.1.2 基准测试 141

13.2 调优 142

13.2.1 分析Go程序 142

13.2.2 用pprof调试 143

第14章 系统标准库 148

14.1 reflect包 148

14.1.1 反射(reflect) 148

14.1.2 反射的应用 150

14.2 unsafe包 155

14.2.1 unsafe包介绍 155

14.2.2 指针运算 156

14.3 sort包 160

14.3.1 sort包介绍 160

14.3.2 自定义sort.Interface排序 163

14.3.3 sort.Slice排序 164

14.4 os包 164

14.4.1 启动外部命令和程序 164

14.4.2 os/signal信号处理 166

14.5 fmt包 167

14.5.1 格式化I/O 167

14.5.2 格式化输出 169

14.6 flag包 174

14.6.1 命令行 174

14.6.2 参数解析 174

14.7 文件操作与I/O 177

14.7.1 文件操作 177

14.7.2 I/O读写 178

14.7.3 ioutil包读写 181

14.7.4 bufio包读写 182

14.7.5 log包日志操作 184

第15章 网络服务 186

15.1 Socket 186

15.1.1 Socket基础知识 186

15.1.2 TCP与UDP 186

15.2 模板(Template) 189

15.2.1 text/template包 189

15.2.2 html/template包 191

15.2.3 模板语法 194

15.3 net/http包 196

15.3.1 http Request 197

15.3.2 http Response 199

15.3.3 http Client 200

15.3.4 http Server 205

15.3.5 自定义类型Handler 210

15.3.6 将函数直接作为Handler 212

15.3.7 中间件 212

15.3.8 搭建静态站点 213

15.4 context包 214

15.4.1 context包介绍 214

15.4.2 上下文应用 216

第16章 数据格式与存储 221

16.1 数据格式 221

16.1.1 序列化与反序列化 221

16.1.2 JSON数据格式 221

16.1.3 将JSON数据反序列化到结构体 222

16.1.4 反序列化任意JSON数据 224

16.1.5 JSON数据编码和解码 225

16.1.6 JSON数据延迟解析 227

16.1.7 Protocol Buffer数据格式 228

16.2 MySQL数据库 231

16.2.1 database/sql包 231

16.2.2 MySQL数据库操作 231

16.3 LevelDB与BoltDB数据库 236

16.3.1 LevelDB数据库操作 237

16.3.2 BoltDB数据库操作 240

第17章 网络爬虫 244

17.1 Colly网络爬虫框架 244

17.2 goquery HTML解析 246

第18章 Web框架——Gin 250

18.1 关于Gin 250

18.2 Gin实际应用 251

18.2.1 静态资源站点 251

18.2.2 构建动态站点 252

18.2.3 中间件的使用 256

18.2.4 RESTful API接口 256

参考文献 260