关于本书的内容有任何问题,请联系 刘博
目 录 第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 用math/rand包生成随机数 87 5.4 用Go语言进行科学计算 90 5.4.1 向量与余弦相似度概念简介 90 5.4.2 计算向量余弦相似度的函数 91 5.5 使用math/big包避免计算过程中 超大数溢出 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 用gonum/mat子包实现矩阵 乘法 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 C/S架构与B/S架构的概念 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 用image/draw包实现灵活的图像 处理 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 部署therecipe/qt示例程序 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
本书通过不断调整与优化,形成了结构合理、循序渐进、容量适度的10个教学单元:计算机基础知识、计算机硬件基础、计...
本书是一本采用任务驱动式体例编写的ECharts数据可视化技术教材,以通俗易懂的语言和丰富实用的任务,帮助读者...
本书是面向PHP语言和MySQL数据库初学者的一本入门教材,使用通俗易懂的语言、丰富的图解和实用的案例,详细讲...
本书为Java基础入门教材,适合初学者使用。全书共13章,第1~2章主要讲解Java技术的一些基础知识,内容包...
本书全面、系统地介绍银河麒麟桌面操作系统的基础知识、WPS Office的基本操作,以及其他信息技术的相关内容...
我要评论