本书涵盖从Go语言入门到Go Web开发高级应用所需的核心知识、方法和技巧,共分4篇。第1篇Go语言入门,介绍Go语言的基础语法,即使是没有Go语言基础的读者也可以学习本书。第2篇Go Web基础入门,介绍能使读者快速掌握用Go语言进行Web开发的基础知识。第3篇Go Web高级应用,教会读者用Go语言快速开发各种Web应用。第4篇Go Web项目实战,通过实例介绍了开发一个B2C电子商务系统的全过程,并用Docker部署Go Web应用。本书可作为Go语言初学者、Web开发工程师的自学用书,也可作为培训机构和相关院校的教材。
廖显东高级软件架构师,全栈开发者,AI算法专家:技术极客,开源爱好者。专注于计算机前沿技术的研究和实践。有多年软件开发与团队管理经验,精通Java、JavaScript、C/C /C#、Python、PHP等开发语言。对Go语言、Rust语言等流行开发语言有深入实践和研究。对大型电子商务系统开发、高并发架构、分布式架构、算法及应用、微服务、大数据、人工智能算法、Web3.0、AIGC、ChatGPT、Midjoumey、元宇宙等计算机前沿技术领域有深入实践和研究。
第1篇 Go语言入门
//
第1章 Go基础入门2
1.1 安装Go2
1.2 【实战】开启Go的第一个程序4
1.2.1 声明包5
1.2.2 导入包5
1.2.3 main()函数6
1.3 Go基础语法与使用7
1.3.1 基础语法7
1.3.2 变量10
1.3.3 常量13
1.3.4 运算符15
1.3.5 流程控制语句16
1.4 Go数据类型26
1.4.1 布尔类型27
1.4.2 数字类型29
1.4.3 字符串类型29
1.4.4 指针类型34
1.4.5 复合类型35
1.5 函数44
1.5.1 声明函数44
1.5.2 函数参数45
1.5.3 匿名函数47
1.5.4 迭代器函数49
1.5.5 defer延迟语句50
1.6 Go面向对象编程52
1.6.1 封装52
1.6.2 继承54
1.6.3 多态56
1.7 接口57
1.7.1 接口的定义57
1.7.2 接口的赋值58
1.7.3 接口的查询61
1.7.4 接口的组合62
1.8 反射63
1.8.1 反射的定义63
1.8.2 反射的三大法则64
1.9 泛型65
1.10 goroutine简介68
1.11 单元测试69
1.12 模块系统72
1.13 Go编译与工具75
1.13.1 编译(go build)75
1.13.2 编译后运行(go run)81
1.13.3 编译并安装(go install)81
1.13.4 获取代码(go get)82
//
第2篇 Go Web基础入门
//
第2章 Go Web开发基础86
2.1 【实战】开启Go Web的第1个程序86
2.2 Web应用程序运行原理简介87
2.2.1 Web基本原理87
2.2.2 Web应用程序的组成88
2.3 【实战】初探Go语言的net/http包90
2.3.1 创建简单的服务器端91
2.3.2 创建简单的客户端92
2.4 使用Go语言的html/template包94
2.4.1 了解模板的原理94
2.4.2 使用html/template包95
第3章 接收和处理Go Web请求101
3.1 【实战】创建一个简单的Go Web服务器101
3.2 接收请求103
3.2.1 ServeMux和DefaultServeMux103
3.2.2 处理器和处理器函数111
3.2.3 串联多个处理器和处理器函数114
3.2.4 生成HTML表单115
3.3 处理请求117
3.3.1 了解Request结构体117
3.3.2 请求URL118
3.3.3 请求头119
3.3.4 请求体120
3.3.5 处理HTML表单121
3.3.6 了解ResponseWriter的原理124
3.4 了解session和cookie129
3.4.1 session和cookie简介129
3.4.2 Go与cookie132
3.4.3 Go使用session134
//
第4章 用Go访问数据库139
4.1 MySQL的安装及使用139
4.1.1 MySQL简介139
4.1.2 MySQL的安装139
4.1.3 用Go访问MySQL140
4.2 Redis的安装及使用146
4.2.1 Redis的安装146
4.2.2 Go访问Redis147
4.3 MongoDB的安装及使用151
4.3.1 MongoDB的安装151
4.3.2 Go访问MongoDB152
4.4 Go的常见ORM库159
4.4.1 什么是ORM159
4.4.2 Gorm(性能极好的ORM库)的安装及使用160
4.4.3 Beego ORM?D?DGo语言的ORM框架164
//
第3篇 Go Web高级应用
//
第5章 Go高级网络编程170
5.1 Go Socket编程170
5.1.1 什么是Socket170
5.1.2 客户端net.Dial()函数的使用173
5.1.3 客户端net.DialTCP()函数的使用174
5.1.4 UDP Socket的使用177
5.1.5 【实战】用Go Socket实现一个简易的聊天程序180
5.2 Go RPC编程184
5.2.1 什么是RPC184
5.2.2 Go RPC的应用185
5.3 微服务191
5.3.1 什么是微服务191
5.3.2 【实战】用gRPC框架构建一个简易的微服务194
//
第6章 Go文件处理200
6.1 操作目录与文件200
6.1.1 操作目录200
6.1.2 创建文件201
6.1.3 打开与关闭文件201
6.1.4 读写文件202
6.1.5 移动与重命名文件203
6.1.6 删除文件203
6.1.7 复制文件204
6.1.8 修改文件权限204
6.1.9 文件链接206
6.1.10 嵌入静态文件206
6.2 处理XML文件208
6.2.1 解析XML文件208
6.2.2 生成XML文件210
6.3 处理JSON文件212
6.3.1 读取JSON文件212
6.3.2 生成JSON文件214
6.4 处理正则表达式215
6.4.1 获取正则对象215
6.4.2 匹配检测216
6.4.3 查找字符和字符串216
6.4.4 查找匹配位置217
6.4.5 替换字符218
6.4.6 分割字符串219
6.5 【实战】从数据库中导出一个CSV文件220
//
第7章 Go并发编程223
7.1 并发与并行223
7.2 进程、线程和协程225
7.3 Go并发模型简介227
7.4 用goroutine和通道实现并发228
7.4.1 goroutine简介228
7.4.2 通道229
7.5 用sync包实现并发233
7.5.1 竞态233
7.5.2 互斥锁234
7.5.3 读写互斥锁235
7.5.4 sync.Once结构体236
7.5.5 同步等待组sync.WaitGroup238
7.5.6 竞态检测器240
7.5.7 sync/atomic 包扩展241
7.6 用Go开发并发的Web应用243
7.6.1 【实战】开发一个自增整数生成器243
7.6.2 【实战】开发一个并发的消息发送器243
7.6.3 【实战】开发一个多路合并计算器244
7.6.4 【实战】用select关键字创建多通道监听器245
7.6.5 【实战】用无缓冲通道阻塞主线247
7.6.6 【实战】用筛法求素数248
7.6.7 【实战】创建随机数生成器249
7.6.8 【实战】创建一个定时器250
7.6.9 【实战】开发一个并发的Web爬虫251
//
第8章 Go RESTful API开发255
8.1 什么是RESTful API255
8.2 Go流行Web框架的使用257
8.2.1 为什么要用框架257
8.2.2 Gin框架的使用257
8.2.3 Beego框架的使用264
8.3 【实战】用Gin框架开发RESTful API276
8.3.1 路由设计276
8.3.2 数据表设计276
8.3.3 模型代码编写276
8.3.4 逻辑代码编写277
8.4 【实战】用Go开发OAuth 2.0接口279
8.4.1 OAuth 2.0简介279
8.4.2 用Go开发OAuth 2.0接口的示例281
//
第4篇 Go Web项目实战
//
第9章 【实战】开发一个B2C电子商务系统286
9.1 需求分析286
9.2 系统设计287
9.2.1 确定系统架构287
9.2.2 制定系统流程288
9.3 设计软件架构289
9.4 设计数据库与数据表290
9.5 搭建系统基础架构291
9.5.1 创建公共文件291
9.5.2 创建模型295
9.6 前台模块开发299
9.6.1 首页模块开发299
9.6.2 注册登录模块开发306
9.6.3 用户中心模块开发314
9.6.4 购物车模块开发317
9.6.5 收银台模块开发320
9.6.6 支付模块开发322
9.7 后台模块开发325
9.7.1 登录模块开发326
9.7.2 商品模块开发326
//
第10章 用Docker部署Go Web应用329
10.1 了解Docker组件及原理329
10.1.1 什么是Docker329
10.1.2 为什么用Docker330
10.1.3 Docker引擎331
10.1.4 Docker构架332
10.1.5 Docker核心概念332
10.2 安装Docker333
10.3 【实战】用Docker运行一个Go Web应用335
10.3.1 创建Go Web应用335
10.3.2 用Docker运行Go Web应用335
10.4 【实战】通过Docker-Compose部署容器集群336
10.4.1 Docker-Compose简介337
10.4.2 通过Docker-Compose实战部署337
10.5 【实战】将Docker容器推送至服务器339
10.5.1 在Docker Hub官网注册账号339
10.5.2 同步本地和Docker Hub的标签(tag)339
10.5.3 推送镜像到Docker Hub340
10.5.4 访问Docker Hub镜像340
10.5.5 使用发布的Docker Hub镜像341