新書推薦:
《
不止江湖
》
售價:NT$
449.0
《
天才留步!——从文艺复兴到新艺术运动(一本关于艺术天才的鲜活故事集,聚焦艺术史的高光时刻!)
》
售價:NT$
704.0
《
双城史
》
售價:NT$
505.0
《
冯友兰和青年谈心系列:不是问题的问题(哲学大师冯友兰和年轻人谈心,命运解读)
》
售價:NT$
254.0
《
月与蟹(青鲤文库)荣获第144届直木奖,天才推理作家经典作品全新译本。一部青春狂想曲,带你登上心理悬疑之巅。
》
售價:NT$
230.0
《
索恩丛书·盛清统治下的太监与皇帝
》
售價:NT$
403.0
《
透过器物看历史(全6册)
》
售價:NT$
2234.0
《
我在台北故宫博物院读名画
》
售價:NT$
500.0
|
編輯推薦: |
1. 实例丰富,书中配有数百个Go语言开发案例,上手容易。
2. 实用技术大全,包罗Go语言开发方方面面,从入门到进阶实战。
3. 配套资源丰富,配有多媒体课件、源代码、视频等资源。
|
內容簡介: |
本书主要内容包括Go语言简介、开发环境准备、快速基础入门、数学科学领域的计算、开发一个自己的日常命令行工具、文件处理、数据格式分析与转换、正则表达式、并发处理、数据采集和清理应用、网络服务端应用、Web服务器、加密解密领域应用、网络提供的各种API、常用Go语言技术的示例与研究、实用函数实例等。安排了大量实例代码,介绍相关编程知识。
|
關於作者: |
谢琼,计算机软件、通信行业和外语在线教育领域专家,国家认证系统分析师。在大型国企和世界50强IT跨国公司从事计算机系统、电信行业项目、外语在线教育项目、人工智能深度学习领域项目多年,曾主持编写国家电信行业安全标准,项目经验丰富,是人工智能英语分析系统小仙英语伴读的创始人。精通十几种计算机语言,擅长理论的落地、实用化,长期担任企业内部培训讲师和整体方案咨询讲师,课程教授方式深入浅出,对实例的讲解简单易懂,易于理解,尤其适合入门学习者。
|
目錄:
|
目 录
第1章 Go语言简介 1
1.1 Go语言的发展历史 1
1.2 Go语言的主要特点 1
第2章 开发环境准备 4
2.1 安装Go语言 4
2.1.1 Windows系统下安装Go语言 4
2.1.2 Mac OS X系统下安装Go语言 8
2.1.3 Linux系统下安装Go语言 8
2.2 打造更舒适的开发环境 9
2.2.1 修改Windows资源管理器的一些
显示设置 9
2.2.2 命令提示符CMD的替代方案 9
2.2.3 文本文件编辑器 11
2.3 Go语言开发工具的选择 11
2.3.1 LiteIDE 11
2.3.2 Visual Studio Code加Go语言
插件 11
2.3.3 其他开发工具 14
第3章 Go语言快速入门 15
3.1 初识Go语言编写、编译和运行 15
3.1.1 怎样输入Go语言程序 15
3.1.2 怎样编译Go语言程序 17
3.1.3 怎样执行Go语言程序 18
3.1.4 怎样查看Go语言的文档 19
3.2 Go语言程序的组织 20
3.2.1 Go语言中程序文件的组织方式 20
3.2.2 非执行包与包的引用 22
3.2.3 自己编写非执行包 23
3.2.4 非执行包名与目录的关系 24
3.2.5 用多级子目录组织包结构 25
3.3 关键字等语言要素 26
3.4 变量 26
3.4.1 变量的基本概念 26
3.4.2 浮点数类型的变量 28
3.4.3 字符串类型的变量 29
3.4.4 布尔类型的变量 29
3.4.5 变量的命名 30
3.4.6 变量声明和赋值的简化形式 31
3.4.7 复合类型的变量 32
3.4.8 变量类型的转换 34
3.4.9 指针类型的变量 35
3.4.10 变量的零值 36
3.5 表达式 37
3.6 函数(方法) 37
3.7 自定义数据类型 40
3.8 面向对象编程 42
3.9 条件判断与分支 45
3.10 循环 46
3.11 并发处理:Go例程 48
3.12 注释 49
3.13 程序编译或运行时出现错误 50
3.14 总结的代码 51
第4章 Go语言的基本语法与
开发基础 52
4.1 Go语言语法要素与代码规范 52
4.1.1 文件和字符串编码 52
4.1.2 语句、代码块与执行顺序 53
4.1.3 语句分隔 53
4.1.4 语法记号 53
4.2 代码格式化工具gofmt 54
4.3 常用的辅助性内置函数 55
4.3.1 内置的输出信息函数print与
println 55
4.3.2 获取数据长度的len函数 56
4.3.3 获取变量容量的cap函数 57
4.3.4 用于复合类型数据的操作函数 57
4.3.5 用于处理异常的函数 58
4.4 格式化输出函数fmt.Printf 58
4.4.1 整数格式化符%d 60
4.4.2 十六进制格式化符%x和%X 61
4.4.3 二进制格式化符%b 62
4.4.4 浮点数格式化符%f 62
4.4.5 其他浮点数格式化符 63
4.4.6 布尔类型的格式化符%t 64
4.4.7 Unicode码相关格式化符%c、
%q和%U 64
4.4.8 字符串格式化符%s 65
4.4.9 指针格式化符%p 66
4.4.10 万能格式化符 %v 66
4.4.11 输出数值类型的格式化符%T 68
4.4.12 输出%字符本身 68
4.5 获取和使用第三方包 68
4.6 定义和使用常量 70
4.7 变量、函数等标识符声明的作用范围 72
4.8 tools包编写自己的函数库 74
第5章 用Go语言进行数学、科学
领域的计算 76
5.1 表达式 76
5.1.1 最简单的表达式单个数值 76
5.1.2 操作符在表达式中的作用 76
5.1.3 函数在表达式中的作用 79
5.1.4 表达式的组合与计算的优先级 80
5.1.5 表达式中数据类型的一致性要求 81
5.2 用表达式进行数学计算 81
5.2.1 体重指数 81
5.2.2 用表达式计算体重指数 82
5.2.3 使用命令行参数传入体重和
身高的变量值 83
5.3 利用系统自带的数学库进行计算 85
5.3.1 查阅Go语言中的参考文档 85
5.3.2 使用math.Pow函数进行平方
计算 86
5.3.3 用mathrand包生成随机数 87
5.4 用Go语言进行科学计算 90
5.4.1 向量与余弦相似度概念简介 90
5.4.2 计算向量余弦相似度的函数 91
5.5 使用mathbig包避免计算过程中
超大数溢出 93
5.5.1 big包的基本使用方法 93
5.5.2 用big包改进余弦相似度计算
函数 94
5.6 计算中的异常处理 95
5.6.1 Go语言中的匿名函数 95
5.6.2 Go语言的延迟处理机制 97
5.6.3 Go语言的异常处理机制 98
5.6.4 处理计算中的异常 100
5.6.5 Go语言中异常的传递顺序 107
5.6.6 使用runtime库输出更多的异常
信息 108
5.7 使用第三方包进行更复杂的数学
计算 109
5.7.1 Gonum包中用于矩阵运算的mat
子包简介 109
5.7.2 矩阵乘法的计算过程 109
5.7.3 用gonummat子包实现矩阵
乘法 110
第6章 用Go语言开发一个
命令行工具 113
6.1 命令行工具简介 113
6.2 典型命令行工具的架构 113
6.3 基本的命令行工具clix程序框架 114
6.4 Go语言中的switch语句 115
6.5 clix的第一个命令:version 118
6.6 增加体重指数计算命令calbmi 118
6.6.1 tools包中增加判断起始
子字符串的函数 118
6.6.2 子字符串的截取 119
6.6.3 tools包中增加判断标志参数的
函数 120
6.6.4 编写clix中的calbmi命令 120
6.6.5 增加命令行开关标志参数 121
6.6.6 使用flag包来分析命令行参数 123
6.7 第三个命令:数字排序 125
6.7.1 循环进阶 125
6.7.2 冒泡法排序 130
6.7.3 用双重循环实现冒泡法排序 131
6.7.4 命令行参数中传入数字序列 131
6.7.5 在clix程序中加入冒泡法
排序的命令 133
6.8 Go语言中对典型代码逻辑结构的
支持 133
6.8.1 基本的代码结构 134
6.8.2 利用标签跳出或继续外层循环 134
6.8.3 goto语句无条件跳转 136
6.8.4 递归(调用自身函数) 137
第7章 Go语言中的字符串处理 138
7.1 字符串相关的基础知识 138
7.1.1 字符串的基本概念 138
7.1.2 byte、uint8和int8类型 138
7.1.3 byte类型的切片([]byte)与
string 140
7.1.4 字符串的基本操作:取长度、
连接、截取等 140
7.1.5 用双引号或反引号括起字符串的
区别 141
7.2 字符串支持多语言编码的特殊
处理 141
7.2.1 UTF-8编码 142
7.2.2 rune类型和rune类型切片 143
7.2.3 用rune对字符串进行遍历 144
7.3 常见的字符串操作 145
7.3.1 判断字符串中是否含有某个子串 145
7.3.2 获取字符串中子串的位置 146
7.3.3 获取字符串中子串第n次出现的
位置 146
7.3.4 统计字符串中子串出现的次数 148
7.3.5 判断字符串的起始或结尾子串 148
7.3.6 比较两个字符串 149
7.3.7 去除字符串首尾空白或其他字符 150
7.3.8 替换字符串中的子串 152
7.3.9 字符串大小写的转换 152
7.3.10 切分字符串 153
7.3.11 合并字符串切片 154
7.3.12 生成重复子串组成的字符串 155
7.3.13 几个Unicode操作 155
7.4 高级字符串操作 157
7.4.1 生成随机字符串 157
7.4.2 用strings.Builder实现不断增长的
字符串 159
7.4.3 用于读取字符串内容的
strings.Reader 161
7.4.4 字符串与数字的相互转化 162
7.4.5 用fmt.Sprintf实现灵活的字符串
处理 169
7.4.6 用fmt.Sscanf从字符串中读取
信息 170
第8章 Go语言中的正则表达式 173
8.1 正则表达式的基本概念与用法 173
8.1.1 用正则表达式判断字符串是否
含有符合一定规则的子串 173
8.1.2 用正则表达式从字符串中提取
符合一定规则的子串 174
8.1.3 用通配符.匹配任意字符 175
8.1.4 贪婪与非贪婪匹配 176
8.1.5 分组提取子串 177
8.1.6 提取所有符合条件的带捕获组的
匹配结果 178
8.1.7 替换符合正则表达式的子串 179
8.1.8 转义字符 180
8.2 正则表达式进阶知识 181
8.2.1 单个字符的表达 181
8.2.2 表达字符出现的次数(数量) 184
8.2.3 非字符匹配(位置匹配) 185
8.2.4 正则表达式中使用标志位进行
设置 186
8.2.5 可选子串匹配 187
8.2.6 非捕获组 187
8.2.7 获取匹配到子串的索引位置 188
8.2.8 用正则表达式分割字符串 188
8.2.9 判断整个字符串是否匹配正则
表达式 189
8.2.10 按字节进行正则表达式匹配 189
第9章 Go语言文件处理 190
9.1 Go语言中文本文件的处理 190
9.1.1 文本文件的编码 190
9.1.2 文本文件的打开、读取与关闭等
基本操作 191
9.1.3 从较大的文本文件中读取完整
内容 193
9.1.4 较简单的读取完整文本的方法 194
9.1.5 更简单的读取完整文本的方法 195
9.1.6 从文本文件中读取指定
数量的行 196
9.1.7 将字符串写入文本文件 198
9.1.8 向已有的文本文件中追加内容 199
9.1.9 用移动文件指针的方法向
文件中追加内容 200
9.1.10 文件、目录的其他基本操作 201
9.1.11 文本文件编码转换 208
9.1.12 文本排序 215
9.1.13 超大文本文件排序 218
9.1.14 文本查重、去重 219
9.2 Go语言中二进制文件的处理 219
9.2.1 Go语言中用二进制文件存储
数据 219
9.2.2 自定义文件格式存储大量数据
记录 224
9.3 文件处理总结 227
第10章 Go语言中数据格式的
分析与转换 229
10.1 常见的数据交换格式 229
10.2 XML格式的处理 229
10.2.1 将数据序列化成XML格式 229
10.2.2 将XML格式的文本反序列化 232
10.2.3 省略字段、字符字段和原始
XML文本字段 234
10.2.4 自行控制某数据类型的XML
序列化反序列化 235
10.3 JSON格式的处理 237
10.3.1 将数据序列化成JSON格式 237
10.3.2 将JSON格式的文本反序列化 239
10.3.3 JSON序列化反序列化时使用
描述字符串 240
10.3.4 自行控制自定义数据类型的
JSON序列化反序列化 242
10.3.5 用空接口类型实现复杂结构的
JSON序列化 244
10.3.6 JSON解析中空接口类型的
应用 246
10.3.7 使用第三方包进行JSON格式的
序列化与反序列化 248
第11章 Go语言的并发处理 250
11.1 Go语言并发编程基础 250
11.2 并发处理时的共享冲突 253
11.3 使用通道类型实现安全的数据共享 255
11.4 使用通道作为数据访问的令牌 257
11.5 使用通道实现多任务的归并 258
11.6 用select实现多通道的归并 260
11.7 select中实现超时中止 262
11.8 用单向通道自定义超时函数 263
11.9 使用sync包进行传统的并发处理 265
11.9.1 用sync.WaitGroup实现
goroutine归并 266
11.9.2 用锁(互斥量)实现
goroutine同步 267
11.9.3 用读写锁(互斥量)做多
读少写型并发任务 268
第12章 Go语言进行数据库开发 270
12.1 Go语言进行数据库开发的一般
方式 270
12.2 安装SQLite数据库驱动 270
12.3 基本的数据库操作新建库表、
插入记录和查询 270
12.4 删除记录、准备SQL查询等操作 273
12.5 获取记录条数、删除库表等操作 275
12.6 SQL型数据库开发总结 276
12.7 NoSQL型数据库开发示例 276
第13章 Go语言进行网络服务的
开发 280
13.1 CS架构与BS架构的概念 280
13.2 基于Socket通信的客户端服务器
模式 280
13.3 基于TCP的Socket客户端服务器
系统 281
13.4 典型的Socket服务器的例子 281
13.5 典型的Socket客户端的例子 283
13.6 典型的UDP服务器的例子 286
13.7 典型的UDP客户端的例子 287
13.8 用Go语言搭建简单的Web服务器 288
13.9 搭建简单的文件服务器 290
13.10 搭建静态文件型的Web网站
服务器 290
13.11 混合不同方式的Web服务器 293
13.12 搭建提供网络接口服务的API
服务器 294
13.13 Web服务器的路由管理 297
13.14 动态网页的生成 299
13.15 提供HTTPS方式访问 302
13.16 第三方的Web开发包 303
13.17 Go语言中实现Web客户端 305
第14章 Go语言进行绘图和图像
处理 307
14.1 基本的点绘图 307
14.2 绘制曲线图 308
14.3 绘制有填充色的形状 311
14.4 实现渐变的填充色 314
14.5 使用第三方库更方便实现复杂
图形绘制 318
14.6 绘制平滑曲线 321
14.7 在图片上绘制文字 323
14.8 使用freetype包进行文字绘制 326
14.9 用imagedraw包实现灵活的图像
处理 328
14.9.1 实现图片区域复制 328
14.9.2 用draw.Draw函数进行颜色
填充 333
14.9.3 image包中的几个重要对象 333
14.9.4 用颜色填充绘制矩形框 334
14.9.5 将图片变成全透明 334
14.9.6 复制原图中的区域到目标图中
另一个区域 335
14.9.7 使用蒙版复制不规则区域 335
14.9.8 自定义image.Image类型的蒙版
对象 337
14.9.9 图片色彩空间的转换 338
14.10 在Web中输出图像 339
第15章 Go语言进行图形界面
开发 343
15.1 使用Qt开发图形界面 343
15.1.1 Go结合Qt开发环境的搭建 343
15.1.2 Go结合Qt开发基础示例 344
15.1.3 部署therecipeqt示例程序 346
15.1.4 在goroutine中安全操作图形
界面 347
15.2 使用govcl包开发图形界面 355
15.2.1 使用govcl包开发图形界面的
基础示例 355
15.2.2 govcl包中避免并发界面操作
冲突 358
15.3 Go语言中开发基于Web的图形
界面 360
第16章 Go语言的反射机制 361
16.1 用反射机制获取基本类型的信息 361
16.2 用反射获取复杂类型的信息 362
16.3 函数的传值与传引用 363
16.4 用反射获取结构类型(对象)的
成员信息 364
16.5 用反射获取空接口类型数据的
实际类型 366
16.6 用Kind函数获取基类型 367
16.7 判断对象是否实现了某方法或接口 370
16.8 动态调用对象的方法 372
16.9 修改数据 374
16.10 实例:JSON处理 375
第17章 Go语言的测试与性能 378
17.1 功能测试 378
17.1.1 基本的功能测试 378
17.1.2 功能测试不通过的情况 379
17.1.3 立即中止测试用例函数 380
17.1.4 简化的中止测试用例函数 381
17.1.5 跳过测试用例 381
17.1.6 进行并发测试 382
17.1.7 指定运行的测试用例 383
17.2 性能测试 384
17.2.1 基本的性能测试 384
17.2.2 根据性能测试结果进行优化和
比对 386
17.2.3 指定性能测试的时长 387
17.2.4 手动控制测试计时 388
17.2.5 测试内存分配的情况 388
第18章 Go语言与其他语言的
结合运用 390
18.1 Cgo 390
18.1.1 Go语言中直接编写C语言
代码 390
18.1.2 Go语言中调用C语言
文件中的代码 393
18.1.3 Go语言中编写函数供
C语言调用 394
18.1.4 Cgo的一些局限 396
18.2 Go语言中运行其他脚本语言 396
18.2.1 Tengo脚本语言 396
18.2.2 实现JavaScript虚拟机的
otto包 398
18.2.3 实现Lua语言虚拟机的
go-lua包 399
18.3 Go语言中直接执行其他程序或调用
系统命令 400
18.3.1 调用应用程序并读取其输出 400
18.3.2 使用管道从程序的输出中接收
信息 402
18.4 Go语言与WebAssembly 404
|
|