本书共有14章,内容包括:初识Go语言、Go语言的基本语法、Go语言的流程控制、函数与指针、Go语言的内置容器、Go语言的常用内置包、Go语言面向对象编程、Go语言异常处理、Go语言文件IO操作、Go语言网络编程、Go语言数据库编程、Go语言并发编程、Go语言密码学算法、Beego框架项目实战。
1.本书涵盖Go 语言最精华、最重要的核心特性包括类型系统、接口、并发。
2.本书介绍了其他书没有的密码学内容。
3.本书通过当下“最流行”的项目案例带领读者从0-1实现技术开发。
千锋教育 1.采用全程面授高品质、高成本培养模式,教学大纲紧跟企业需求,拥有全国一体化就业保障服务,成为学员信赖的IT职业教育品牌。 2.获得荣誉包括:中关村移动互联网产业联盟副理事长单位、中国软件协会教育培训委员会认证一级培训机构、中关村国际孵化软件协会授权中关村移动互联网学院、教育部教育管理信息中心指定移动互联网实训基地等。
第1章 初识Go语言 1
1.1 Go语言的发展历史 1
1.2 Go语言的特性 2
1.2.1 Go语言的特点和优势 2
1.2.2 使用Go语言的项目与企业 3
1.3 安装和配置Golang 3
1.3.1 Windows版本安装 4
1.3.2 Mac OS版本安装 6
1.3.3 Linux版本安装 7
1.4 搭建集成开发环境GoLand 7
1.4.1 GoLand的下载及安装 7
1.4.2 GoLand的使用 8
1.4.3 编写第一个程序HelloWorld 8
1.4.4 GoLand的快捷键 11
1.5 Go语言的结构组成及编码规范 11
1.5.1 Go语言的结构组成 11
1.5.2 Go语言的标识符 12
1.5.3 Go语言的编码规范 14
1.6 本章小结 15
1.7 习题 15
第2章 Go语言的基本语法 16
2.1 变量 16
2.1.1 变量的概念 16
2.1.2 变量声明 17
2.1.3 变量多重赋值 18
2.1.4 匿名变量 19
2.2 数据类型 19
2.2.1 整型 20
2.2.2 浮点型 20
2.2.3 复数型 21
2.2.4 布尔型 21
2.2.5 字符串 21
2.2.6 字符 22
2.3 打印格式化 23
2.3.1 通用打印格式 23
2.3.2 布尔型打印格式 23
2.3.3 整型打印格式 24
2.3.4 浮点型与复数型的打印格式 25
2.3.5 字符串与字节数组的打印格式 27
2.4 数据类型转换 27
2.4.1 基本语法 27
2.4.2 浮点型与整型之间转换 28
2.4.3 整型转字符串类型 28
2.5 常量 30
2.5.1 声明方式 30
2.5.2 常量用于枚举 30
2.5.3 iota 31
2.6 类型别名与类型定义 33
2.7 Go语言的运算符 33
2.7.1 算术运算符 34
2.7.2 关系运算符 35
2.7.3 逻辑运算符 36
2.7.4 位运算符 37
2.7.5 赋值运算符 40
2.7.6 其他运算符 41
2.8 运算符优先级 42
2.9 本章小结 43
2.10 习题 44
第3章 Go语言的流程控制 45
3.1 流程控制概述 45
3.1.1 条件判断语句 45
3.1.2 条件分支语句 45
3.1.3 循环语句 46
3.1.4 循环控制语句 46
3.2 if条件判断语句 46
3.2.1 语法结构 46
3.2.2 使用案例 47
3.2.3 特殊写法 48
3.3 if嵌套语句 49
3.3.1 语法结构 49
3.3.2 使用案例 49
3.4 switch分支语句 50
3.4.1 语法结构 50
3.4.2 使用案例 51
3.4.3 类型转换 52
3.5 for循环语句 53
3.5.1 语法结构 53
3.5.2 使用案例 57
3.6 for嵌套循环语句 59
3.6.1 语法结构 59
3.6.2 使用案例 59
3.7 循环控制语句 61
3.7.1 break语句 61
3.7.2 continue语句 62
3.7.3 goto语句 63
3.8 本章小结 64
3.9 习题 64
第4章 Go语言的函数与指针 66
4.1 函数 66
4.1.1 函数声明 66
4.1.2 变量作用域 67
4.1.3 函数变量(函数作为值) 69
4.1.4 匿名函数 71
4.1.5 闭包 73
4.1.6 可变参数 76
4.1.7 递归函数 77
4.2 指针 79
4.2.1 指针的概念 79
4.2.2 声明指针 79
4.2.3 空指针 82
4.2.4 使用指针 82
4.2.5 指针数组 83
4.2.6 指针的指针 84
4.3 函数的参数传递 85
4.3.1 值传递(传值) 85
4.3.2 引用传递(传引用) 85
4.3.3 值传递和引用传递的细节问题 89
4.4 本章小结 90
4.5 习题 90
第5章 Go语言的内置容器 92
5.1 数组 92
5.1.1 数组的概念 92
5.1.2 数组的语法 92
5.1.3 数组的长度 93
5.1.4 遍历数组 94
5.1.5 多维数组 94
5.1.6 数组是值类型 96
5.2 切片 97
5.2.1 切片的概念 97
5.2.2 切片的语法 97
5.2.3 len()和cap()函数 99
5.2.4 切片是引用类型 100
5.2.5 append()和copy()函数 101
5.3 map 104
5.3.1 map的概念 104
5.3.2 map的语法 105
5.3.3 delete()函数 107
5.3.4 map是引用类型 108
5.4 本章小结 109
5.5 习题 109
第6章 Go语言的常用内置包 111
6.1 字符串处理概述 111
6.1.1 字符串处理包简介 111
6.1.2 字符串的遍历 111
6.2 strings包的字符串处理函数 113
6.2.1 检索字符串 113
6.2.2 分割字符串 116
6.2.3 大小写转换 117
6.2.4 修剪字符串 118
6.2.5 比较字符串 120
6.3 strconv包的常用函数 122
6.3.1 Parse类函数 122
6.3.2 Format类函数 123
6.4 regexp正则表达式包 125
6.4.1 正则表达式简介 125
6.4.2 正则表达式中主要元字符 125
6.4.3 regexp包中核心函数及方法
介绍 127
6.5 time包 130
6.6 math包 133
6.7 随机数 134
6.7.1 rand包的核心方法介绍 135
6.7.2 获取随机数的几种方式 135
6.8 键盘输入 137
6.8.1 Scanln()函数 137
6.8.2 随机数+键盘输入案例——猜
数字游戏 138
6.9 本章小结 139
6.10 习题 140
第7章 Go语言面向对象编程 141
7.1 面向对象思想概述 141
7.1.1 面向过程与面向对象 141
7.1.2 Go语言面向对象 142
7.2 结构体 143
7.2.1 定义结构体与实例化 143
7.2.2 结构体的语法糖 144
7.2.3 结构体是值类型 145
7.2.4 结构体的深拷贝和浅拷贝 147
7.2.5 结构体作为函数的参数及
返回值 148
7.2.6 匿名结构体和匿名字段 150
7.2.7 结构体嵌套 152
7.3 方法 155
7.3.1 方法的概念 155
7.3.2 基本语法 156
7.3.3 方法和函数 157
7.3.4 方法继承 158
7.3.5 方法重写 159
7.4 接口 160
7.4.1 接口的概念 160
7.4.2 接口的定义与实现 161
7.4.3 duck typing 162
7.4.4 多态 164
7.4.5 空接口 166
7.4.6 接口对象转型 167
7.5 本章小结 170
7.6 习题 170
第8章 Go语言异常处理 172
8.1 error 172
8.1.1 error接口 172
8.1.2 创建error对象 174
8.1.3 自定义错误 175
8.2 defer 177
8.2.1 函数中使用defer 177
8.2.2 方法中使用defer 178
8.2.3 defer参数 179
8.2.4 堆栈的推迟 179
8.3 panic和recover机制 180
8.3.1 panic 180
8.3.2 recover 182
8.4 本章小结 183
8.5 习题 183
第9章 Go语言文件I/O操作 185
9.1 文件信息 185
9.1.1 文件概述 185
9.1.2 FileInfo接口 185
9.1.3 文件路径 188
9.2 文件常规操作 189
9.2.1 创建目录 189
9.2.2 创建文件 190
9.2.3 打开和关闭文件 191
9.2.4 删除文件 192
9.3 读写文件及复制文件 193
9.3.1 读取文件 193
9.3.2 写入文件 194
9.3.3 复制文件 196
9.4 ioutil包 197
9.4.1 ioutil包核心函数 197
9.4.2 示例代码 197
9.5 bufio包 199
9.5.1 缓冲区的原理 199
9.5.2 bufio.Reader结构体 200
9.5.3 bufio.Writer结构体 201
9.5.4 Scanner 203
9.6 本章小结 205
9.7 习题 205
第10章 Go语言网络编程 206
10.1 HTTP概述 206
10.1.1 HTTP的概念 206
10.1.2 HTTP请求方法 207
10.1.3 HTTPS通信原理 207
10.1.4 HTTPS的作用 207
10.2 HTTP协议客户端实现 208
10.3 HTTP协议服务端实现 213
10.3.1 启动Web服务的几种方式 213
10.3.2 服务器端获取客户端请求的
数据 218
10.4 Golang模板 221
10.4.1 模板的概念 221
10.4.2 基本语法 221
10.5 JSON编码 224
10.5.1 JSON简介 224
10.5.2 map转JSON 225
10.5.3 结构体转JSON 226
10.5.4 结构体字段标签 227
10.5.5 匿名字段 228
10.5.6 注意事项 228
10.6 JSON解析 229
10.6.1 JSON转切片 229
10.6.2 JSON转结构体 229
10.6.3 结构体字段标签 230
10.6.4 匿名字段 231
10.7 本章小结 232
10.8 习题 232
第11章 Go语言数据库编程 233
11.1 数据库介绍 233
11.2 MySQL数据库的使用 234
11.2.1 服务启动和停止MySQL服务 234
11.2.2 登录和退出MySQL数据库 236
11.2.3 MySQL数据库基本操作 238
11.3 MySQL数据类型 238
11.3.1 数值类型 238
11.3.2 日期时间类型 239
11.3.3 字符串类型 239
11.4 SQL基础入门 240
11.4.1 SQL语言简介 240
11.4.2 SQL分类 240
11.4.3 DDL语句基本用法 241
11.4.4 DML语句基本用法 243
11.4.5 DQL语句基本用法 244
11.5 Go程序操作MySQL数据库 245
11.5.1 安装MySQL模块 245
11.5.2 导入包 246
11.5.3 连接数据库 246
11.5.4 增删改数据 246
11.5.5 查询数据 247
11.5.6 示例代码 248
11.6 本章小结 253
11.7 习题 253
第12章 Go语言并发编程 255
12.1 并发和并行 255
12.1.1 单道程序与多道程序 255
12.1.2 并发与并行的区别 255
12.2 进程和线程 256
12.2.1 程序与进程 256
12.2.2 进程与线程的区别 256
12.2.3 进程与线程的联系 256
12.3 Goroutine 257
12.3.1 协程的概念 257
12.3.2 Go语言中的协程 257
12.3.3 Coroutine与Goroutine 257
12.3.4 普通函数创建Goroutine 258
12.3.5 匿名函数创建Goroutine 260
12.3.6 启动多个Goroutine 261
12.3.7 调整并发的运行性能 261
12.4 channel 262
12.4.1 channel的概述 262
12.4.2 创建channel类型 262
12.4.3 使用channel发送数据 263
12.4.4 通过channel接收数据 263
12.4.5 阻塞 265
12.4.6 关闭channel 266
12.4.7 缓冲channel 267
12.4.8 单向channel 270
12.5 time包中与channel相关的
函数 271
12.5.1 Timer结构体 271
12.5.2 NewTimer()函数 272
12.5.3 After()函数 273
12.6 select分支语句 273
12.6.1 执行流程 273
12.6.2 示例代码 274
12.7 sync包 275
12.7.1 同步等待组 276
12.7.2 互斥锁 277
12.7.3 读写互斥锁 279
12.7.4 条件变量 281
12.8 本章小结 283
12.9 习题 283
第13章 Go语言密码学算法 285
13.1 Hash算法 285
13.1.1 Hash的定义 285
13.1.2 流行的Hash算法 286
13.1.3 Hash与加密解密的区别 287
13.1.4 SHA-256 287
13.1.5 核心代码 288
13.2 对称加密算法 291
13.2.1 对称加密简介 291
13.2.2 DES和3DES算法 291
13.2.3 AES算法 292
13.2.4 AES的加密模式 292
13.2.5 填充方式 293
13.2.6 核心代码 293
13.3 非对称加密算法 299
13.3.1 非对称加密简介 299
13.3.2 非对称加密算法实现数字签名 299
13.3.3 RSA算法 300
13.3.4 核心代码 300
13.4 椭圆曲线加密算法和椭圆曲线数字
签名算法 304
13.4.1 椭圆曲线加密简介 304
13.4.2 数字签名的概念 305
13.4.3 核心代码 306
13.5 字符编码与解码 308
13.5.1 Base64 308
13.5.2 Base58 309
13.6 本章小结 311
13.7 习题 312
第14章 Beego框架项目
实战 313
14.1 Beego框架介绍及项目初始化
配置 313
14.1.1 Beego简介 313
14.1.2 Beego框架的主要特性 313
14.1.3 Beego安装 314
14.1.4 bee工具的使用 315
14.1.5 创建项目 315
14.1.6 结构分析 317
14.1.7 路由设置 320
14.2 Elm后台管理平台项目介绍 321
14.2.1 项目介绍 321
14.2.2 项目效果展示 321
14.2.3 整体架构简介 322
14.3 数据库配置及ORM映射 323
14.3.1 ORM简介 323
14.3.2 Beego项目中使用MySQL 323
14.3.3 数据导入 325
14.3.4 接口文档说明 325
14.3.5 模块开发 325
14.3.6 数据格式封装 327
14.4 Redis 328
14.4.1 Redis简介 328
14.4.2 Redis安装 328
14.4.3 Redis操作与使用 329
14.4.4 项目中使用Redis 330
14.4.5 登录管理员退出操作 331
14.4.6 文件操作 331
14.4.7 数据库表关系映射 333
14.5 项目功能完善 334
14.5.1 商户模块功能开发 334
14.5.2 食品模块功能开发 336
14.5.3 订单模块功能开发 338
14.5.4 添加数据记录模块开发 339
14.6 本章小结 342
14.7 习题 342