深入浅出Go语言的众多关键特性,并提供大量场景示例,对于刚接触或转型Go编程的读者是一本很友好的上手指南。
涉及内容新颖而广泛,包括语法结构、面向对象、并发编辑、上下文机制、网络编程、Go汇编以及流行框架等。
不仅讲解Go语言的编程方法与开发技巧,而且力图解读Go语言的设计思想,带领读者探究Go语言的本质。
三位作者都是一线长期使用Go语言的资深开发人,他们的经验是本书质量的保证,希望各位读者能通过阅读本书收获更多。
目 录
第1章 第一个Go程序 1
1.1 搭建开发环境 1
1.2 一个简单的Go程序 3
1.3 环境变量说明 6
1.4 在IDE中运行Go语言程序 7
1.5 Go语言如何实现跨平台 9
1.6 探寻Go语言程序的编译执行过程 11
1.7 编程范例——启动参数的使用 14
1.8 本章小结 19
第2章 变量与常量 20
2.1 变量 20
2.2 常量 26
2.3 iota与枚举 28
2.4 编程范例——iota的使用技巧 32
2.5 本章小结 34
第3章 简单数据类型 35
3.1 整型 35
3.2 浮点型 37
3.3 布尔类型 40
3.4 字符型 40
3.5 字符串类型 43
3.6 数组类型 46
3.7 编程范例——原义字符的使用 49
3.8 本章小结 50
第4章 复杂数据类型 51
4.1 值类型和指针类型 51
4.2 slice(切片)的使用及实现原理 54
4.2.11 总结切片操作的底层原理 64
4.3 map(映射)的使用及实现原理 65
4.4 channel(通道)的使用及实现原理 72
4.5 自定义结构体 76
4.6 编程范例——结构体使用实例 80
4.7 本章小结 87
第5章 流程控制 88
5.1 分支控制 88
5.2 循环控制 94
5.3 跳转控制 99
5.4 编程范例——流程控制的灵活使用 101
5.5 本章小结 106
第6章 函数 107
6.1 函数在Go语言中的地位 107
6.2 函数的定义 110
6.3 函数的管理——模块和包 115
6.4 函数的调用和执行 123
6.5 将函数作为变量使用 128
6.6 匿名函数和闭包 132
6.7 函数的强制转换 137
6.8 编程范例——闭包的使用 142
6.9 本章小结 146
第7章 异常处理 147
7.1 异常机制的意义 147
7.2 Go语言中的异常 150
7.3 异常捕获 154
7.4 异常捕获后的资源清理 159
7.5 编程范例——异常的使用及误区 163
7.6 本章小结 166
第8章 Go语言的面向对象编程 167
8.1 面向对象编程的本质 167
8.2 Go语言实现封装 168
8.3 Go语言实现继承 1718.4 Go语言实现多态 176
8.5 面向接口编程 178
8.6 编程范例——接口的典型应用 181
8.7 本章小结 184
第9章 并发 185
9.1 线程的概念 185
9.2 线程模型 187
9.3 协程的工作原理 187
9.4 Go语言中的协程同步 192
9.5 利用channel实现协程同步 199
9.6 让出时间片 204
9.7 Go语言中的单例 206
9.8 编程范例——协程池及协程中断 209
9.9 本章小结 217
第10章 上下文 218
10.1 上下文和普通参数的区别 218
10.2 上下文树 219
10.3 利用valueCtx实现信息透传 222
10.4 利用cancelCtx通知协程终止执行 224
10.5 利用timerCtx实现定时取消 230
10.6 编程范例——上下文的典型应用场景 234
10.7 本章小结 239
第11章 反射 240
11.1 反射的意义 240
11.2 反射的API 241
11.3 值信息 246
11.4 编程范例——动态方法调用 255
11.5 本章小结 258
第12章 泛型 259
12.1 泛型的意义 259
12.2 泛型应用到函数 261
12.3 泛型导致接口定义的变化 265
12.4 泛型类型应用到receiver 268
12.5 编程范例——自定义队列的实现 270
12.6 本章小结 272
第13章 I/O 273
13.1 Reader和Writer 273
13.1.1 理解Reader和Writer 273
13.1.2 Reader和Writer接口 274
13.1.3 Go语言的I/O API要解决的问题 275
13.1.4 文件读取 275
13.1.5 文件写入 278
13.1.6 文件权限与umask 281
13.1.7 一次性读写 283
13.2 缓冲区读写 284
13.3 字符串数据源 287
13.4 bufio.Scanner的使用 292
13.5 编程范例——文件系统相关操作 303
13.6 本章小结 307
第14章 网络编程 308
14.1 网络连接的本质 308
14.2 利用TCP实现网络通信 310
14.3 利用UDP实现网络通信 315
14.4 HTTP的相关操作 322
14.5 数据传输过程 334
14.6 编程范例——常见网络错误的产生及解决方案 336
14.6.1 模拟CLOSE_WAIT 336
14.7 本章小结 351
第15章 RPC通信 352
15.1 如何理解RPC通信 352
15.2 Gob格式——利用HTTP和TCP实现RPC通信 354
15.3 JSON格式——利用jsonrpc实现RPC通信 374
15.4 gRPC格式——利用gRPC实现RPC通信 376
15.5 编程范例——基于Wireshark理解RPC通信 385
15.6 本章小结 389
第 16 章 内存管理 390
16.1 内存对齐 390
16.2 内存分级管理 395
16.2.1 分级管理的本质 395
16.3 Go语言的垃圾回收 400
16.4 编程范例——unsafe包的使用 408
16.5 本章小结 415
第 17 章 Go语言中的正则表达式 416
17.1 正则表达式基础 416
17.2 Go语言中的正则表达式 418
17.3 Go语言中的正则表达式函数 421
17.4 编程范例——判断行为序列 429
17.5 本章小结 430
第 18 章 深入理解Go——Plan 9汇编 431
18.1 Go汇编简介 432
18.2 从内存角度看函数的调用过程 434
18.3 寄存器与内存布局 439
18.4 第一个Go汇编程序 445
18.5 利用Go汇编定义变量 449
18.6 利用Go汇编定义函数 457
18.7 Go汇编中的流程控制 462
18.8 重新理解多返回值 467
18.9 编程范例——理解常用寄存器 467
18.10 本章小结 471
第19章 Gin处理HTTP请求及响应 472
19.1 Gin框架简介 472
19.2 Gin框架与HTTP请求 473
19.3 Gin框架处理参数 475
19.4 Gin框架处理响应 481
19.5 Gin框架的路由处理 489
19.6 Gin框架的中间件 492
19.7 编程范例——实现登录认证 496
19.8 本章小结 499
第20章 Go语言实现MVC项目 500
20.1 项目背景 500
20.2 利用gorm生成MySQL数据表 502
20.3 实现用户注册 506
20.4 实现用户登录 510
20.5 实现用户查询 512
20.6 实现用户删除 514
20.7 本章小结 516
温馨提示:请使用威海市图书馆的读者帐号和密码进行登录