第1篇 基础篇 3
第1章 为什么要使用Go语言 3
1.1 Go语言的产生背景 3
1.2 Go语言的主要特点以及使用Go语言开发的优势 4
1.2.1 Go语言的优势 4
1.2.2 Go语言的设计原则 4
1.2.3 Go语言的特点 5
本章小结 8
课后练习 8
第2章 Go语言开发环境 9
2.1 Go安装 9
2.2 开发工具 11
2.2.1 LiteIDE 11
2.2.2 Goland 11
2.2.3 Eclipse 12
2.2.4 Sublime Text 13
2.3 Go语言中的开发包 14
2.3.1 Go语言标准库 14
2.3.2 常用包介绍 15
2.3.3 其他包 15
本章小结 16
课后练习 16
第3章 “Hello World”程序实现 17
3.1 Go语言开发的基本规则 17
3.1.1 第一个Go程序 17
3.1.2 包及其导入 18
3.1.3 变量 19
3.1.4 常量 21
3.1.5 注释 23
3.2 基本数据类型 23
3.2.1 布尔类型 23
3.2.2 整型类型 24
3.2.3 浮点类型 25
3.2.4 复数类型 26
3.2.5 字符串类型 26
3.3 派生数据类型 26
3.4 运算符 28
3.4.1 算术运算符 28
3.4.2 关系运算符 28
3.4.3 逻辑运算符 29
3.4.4 按位运算符 29
3.4.5 赋值运算符 30
3.4.6 其他(杂项)运算符 31
3.5 类型转换与类型别名 31
本章小结 32
课后练习 32
第2篇 核心篇 35
第4章 流程控制 35
4.1 选择结构 35
4.1.1 条件语句 35
4.1.2 switch语句 37
4.2 循环结构 39
4.2.1 for语句 39
4.2.2 range 40
4.3 跳转语句 41
4.3.1 break和continue 41
4.3.2 goto 42
本章小结 43
课后练习 43
第5章 数组、切片和映射 45
5.1 数组 45
5.1.1 声明与初始化 46
5.1.2 元素访问 47
5.1.3 值类型 48
5.2 切片 48
5.2.1 创建与初始化 49
5.2.2 使用切片 50
5.3 映射 57
5.3.1 创建和初始化 58
5.3.2 使用映射 58
本章小结 61
课后练习 61
第6章 string操作 63
6.1 string介绍 63
6.2 连接字符串 64
6.2.1 字符串的连接方式 64
6.2.2 连接方式性能比较 67
6.3 解析字符串 67
6.3.1 遍历字符串 67
6.3.2 字符串操作 69
6.4 检查字符串长度 71
6.4.1 调用bytes.Count()函数 72
6.4.2 调用strings.Count()函数 72
6.4.3 调用utf8.RuneCountInString()函数 73
6.5 数据复制 73
本章小结 74
课后练习 74
第7章 函数 76
7.1 创建一个简单函数 76
7.2 复杂函数 77
7.2.1 带参数的函数 77
7.2.2 含返回值的函数 78
7.2.3 含多个返回值的函数 79
7.2.4 含多个参数的函数 79
7.3 匿名函数和闭包 81
7.4 递归函数 82
本章小结 83
课后练习 83
第8章 指针 86
8.1 指针的定义 86
8.2 Go语言中的指针 87
8.2.1 Go语言指针基本操作 87
8.2.2 Go语言new函数 88
8.2.3 Go语言指针数组 89
8.2.4 Go语言指针作为函数参数 90
本章小结 90
课后练习 91
第9章 结构体和方法 93
9.1 结构体 93
9.1.1 什么是结构体 93
9.1.2 创建一个结构体 94
9.1.3 嵌入式结构体 100
9.2 方法 102
9.2.1 什么是方法 102
9.2.2 如何创建一个方法 103
9.2.3 方法与封装 105
9.2.4 嵌入式结构体中的方法 106
本章小结 107
课后练习 107
第10章 接口 109
10.1 接口的定义 109
10.2 接口的实现 110
10.3 空接口 112
10.4 类型断言 113
10.5 类型查询 115
本章小结 115
课后练习 115
第11章 并发 117
11.1 协程 117
11.1.1 协程简单应用 118
11.1.2 协程与阻塞 118
11.1.3 NewTimer与NewTicker 119
11.2 同步协程 121
11.2.1 WaitGroup 121
11.2.2 Cond 122
11.2.3 Once 123
11.3 通道 124
11.3.1 通道定义 124
11.3.2 通道的缓冲机制 125
11.3.3 通道的close 127
11.3.4 select 127
11.3.5 协程与通道结合 131
本章小结 133
课后练习 133
第3篇 提高篇 139
第12章 文件操作 139
12.1 写数据到文件 139
12.2 从文件中读取数据 141
12.2.1 创建文件 141
12.2.2 打开文件 141
12.2.3 读文件 142
12.3 文件的复制 144
12.3.1 使用Go语言内建的Copy()函数 144
12.3.2 使用Go语言内建的CopyN()函数 145
12.3.3 文件的读入与写出 146
本章小结 147
课后练习 147
第13章 错误处理与日志 149
13.1 错误处理 149
13.1.1 定义错误 149
13.1.2 打印错误 150
13.2 defer()、panic()、recover()函数 151
13.2.1 defer()函数 151
13.2.2 panic()函数 153
13.2.3 recover()函数 153
13.3 日志 154
13.4 举例结合使用错误处理方法和日志 157
本章小结 158
课后练习 158
第14章 创建自己的go包 162
14.1 创建一个go包 162
14.2 go包的导入方式 164
14.2.1 相对路径导入 164
14.2.2 绝对路径导入 164
本章小结 164
课后练习 164
第4篇 应用篇 167
第15章 Go语言编码 167
15.1 Base64编码 167
15.2 十六进制编码 169
15.3 JSON编码 170
15.4 XML编解码 171
15.4.1 XML编码 171
15.4.2 XML解码 172
15.5 CSV编码 174
本章小结 175
课后练习 175
第16章 数据库编程 177
16.1 Go语言与数据库 177
16.2 安装MySQL 177
16.3 MySQL连接 179
16.4 连接测试 180
16.5 数据查询 180
16.5.1 已知数据表结构时查询数据 181
16.5.2 未知数据表结构时查询数据 182
本章小结 183
课后练习 183