第1章 Go语言环境配置 1
1.1 Go语言安装 1
Go语言的三种安装方式 1
Go语言源码安装 2
Go语言标准包安装 2
第三方工具安装 5
1.2 GOPATH与工作空间 5
GOPATH设置 5
应用目录结构 6
编译应用 7
获取远程包 8
程序的整体结构 8
1.3 Go语言命令 9
Go语言命令 9
go build 10
go clean 10
go fmt 11
go get 11
go install 12
go test 12
go doc 12
其他命令 12
1.4 Go语言开发工具 13
LiteIDE 13
Sublime Text 16
Vim 19
Emacs 20
Eclipse 23
IntelliJ IDEA 26
1.5 总结 29
第2章 Go语言基础 30
2.1 你好,Go 30
程序 30
详解 31
小结 31
2.2 Go语言基础 32
定义变量 32
常量 33
内置基础类型 33
一些技巧 36
array、slice、map 37
2.3 流程和函数 44
流程控制 44
函数 48
2.4 struct类型 57
struct 57
2.5 面向对象 62
method 62
2.6 interface 70
interface 70
2.7 并发 80
goroutine 80
channels 81
Buffered Channels 82
Range和Close 83
Select 84
超时 85
runtime goroutine 85
2.8 总结 85
第3章 Web基础 87
3.1 Web工作方式 87
URL和DNS解析 88
HTTP协议详解 90
请求实例 95
3.2 Go语言搭建一个Web服务器 95
http包建立Web服务器 96
3.3 Go语言如何使Web工作 97
Web工作方式的几个概念 97
分析http包运行机制 98
3.4 Go语言的http包详解 100
Conn的goroutine 100
ServeMux的自定义 100
Go语言代码的执行流程 102
3.5 总结 103
第4章 表单 104
4.1 处理表单的输入 104
4.2 验证表单的输入 107
必填字段 107
数字 108
中文 108
英文 109
电子邮件地址 109
手机号码 109
下拉菜单 109
单选按钮 110
复选框 110
日期和时间 111
身份证号码 111
4.3 预防跨站脚本 112
4.4 防止多次递交表单 113
4.5 处理文件上传 115
客户端上传文件 117
4.6 总结 119
第5章 访问数据库 120
5.1 database/sql接口 120
sql.Register 120
driver.Driver 121
driver.Conn 122
driver.Stmt 122
driver.Tx 123
driver.Execer 123
driver.Result 123
driver.Rows 123
driver.RowsAffected 124
driver.Value 124
driver.ValueConverter 124
driver.Valuer 125
database/sql 125
5.2 使用MySQL数据库 125
MySQL驱动 126
示例代码 126
5.3 使用SQLite数据库 129
驱动 129
实例代码 129
5.4 使用PostgreSQL数据库 131
驱动 131
实例代码 132
5.5 使用beedb库进行ORM开发 134
安装 134
如何初始化 135
插入数据 136
更新数据 136
查询数据 137
删除数据 138
关联查询 138
Group By和HaVing 139
进一步的发展 139
5.6 NOSQL数据库操作 139
redis 140
MongoDB 141
5.7 总结 143
第6章 Session和数据存储 144
6.1 Session和Cookie 144
Cookie 146
Session 147
小结 148
6.2 Go语言如何使用Session 148
Session创建过程 149
Go语言实现Session管理 149
6.3 Session存储 154
6.4 预防Session劫持 157
Session劫持过程 157
Session劫持防范 160
6.5 总结 161
第7章 文本处理 162
7.1 XML处理 162
解析XML 163
输出XML 165
7.2 JSON处理 168
解析JSON 168
生成JSON 171
7.3 正则处理 173
通过正则判断是否匹配 174
通过正则获取内容 175
7.4 模板处理 179
什么是模板 179
Go语言模板使用 180
模板中如何插入数据 180
Must操作 186
嵌套模板 186
小结 188
7.5 文件操作 188
目录操作 188
文件操作 189
7.6 字符串处理 191
字符串操作 191
字符串转换 193
7.7 总结 194
第8章 Web服务 195
8.1 Socket编程 195
什么是Socket 196
Socket如何通信 196
Socket基础知识 197
TCP Socket 198
UDP Socket 202
小结 204
8.2 WebSocket 204
WebSocket原理 205
Go语言实现WebSocket 206
8.3 REST 209
什么是REST 209
RESTful的实现 211
小结 213
8.4 RPC 213
RPC工作原理 214
Go RPC 215
小结 223
8.5 总结 223
第9章 安全与加密 224
9.1 预防CSRF攻击 224
什么是CSRF 224
CSRF的原理 225
如何预防CSRF 226
总结 227
9.2 确保输入过滤 228
识别数据 228
过滤数据 228
区分过滤数据 229
小结 230
9.3 避免XSS攻击 230
什么是XSS 230
XSS的原理 231
如何预防XSS 232
小结 232
9.4 避免SQL注入 232
什么是SQL注入 232
SQL注入实例 233
如何预防SQL注入 234
小结 234
9.5 存储密码 235
普通方案 235
进阶方案 236
专家方案 237
总结 237
9.6 加密和解密数据 237
base64加解密 238
高级加解密 238
小结 240
9.7 总结 240
第10章 国际化和本地化 241
10.1 设置默认地区 241
什么是Locale 241
设置Locale 242
小结 244
10.2 本地化资源 244
本地化文本信息 244
本地化日期和时间 246
本地化货币值 246
本地化视图和资源 247
小结 248
10.3 国际化站点 248
管理多个本地包 248
自动加载本地包 249
template mapfunc 250
小结 252
10.4 总结 252
第11章 错误处理、调试和测试 253
11.1 错误处理 253
Error类型 254
自定义error 255
错误处理 256
小结 258
11.2 使用GDB调试 258
GDB调试简介 259
常用命令 259
调试过程 261
小结 264
11.3 Go语言怎么写测试用例 264
如何编写测试用例 265
如何编写压力测试 267
小结 268
11.4 总结 268
第12章 部署与维护 269
12.1 应用日志 269
seelog介绍 269
基于seelog的自定义日志处理 270
发生错误发送邮件 272
使用应用日志 273
小结 273
12.2 网站错误处理 273
错误处理的目标 274
如何处理错误 275
如何处理异常 277
小结 277
12.3 应用部署 278
daemon 278
Supervisord 280
小结 282
12.4 备份和恢复 283
应用备份 283
MySQL备份 284
MySQL恢复 287
redis备份 287
redis恢复 287
小结 287
12.5 总结 287
第13章 如何设计一个Web框架 289
13.1 项目规划 289
gopath以及项目设置 289
应用程序流程图 290
目录结构 291
框架设计 291
小结 291
13.2 自定义路由器设计 292
HTTP路由 292
默认的路由实现 292
beego框架路由实现 293
13.3 日志和配置设计 298
日志和配置的重要性 298
beego的日志设计 298
beego的配置设计 301
应用指南 303
13.4 实现博客的增删改 303
博客目录 304
博客路由 304
数据库结构 304
控制器 305
model 层 306
view层 307
13.5 总结 309
第14章 扩展Web框架 310
14.1 静态文件支持 310
beego静态文件实现和设置 310
Bootstrap集成 311
14.2 Session支持 312
Session集成 312
Session使用 314
14.3 表单及验证支持 315
表单和验证 315
表单类型 316
表单验证 316
14.4 用户认证 318
HTTP Basic和HTTP Digest认证 318
oauth和oauth2的认证 319
自定义认证 321
14.5 多语言支持 324
i18n集成 324
多语言开发使用 325
14.6 pprof支持 326
beego支持pprof 326
使用入门 327
14.7 小结 329
附录A 参考资料 330