书籍作者:刘瑜 | ISBN:9787121439766 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:1994 |
创建日期:2023-05-04 | 发布日期:2023-05-04 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
Go语言是近几年广受关注的一门新兴编程语言,在设计之初就致力于解决C语言的低效问题,以及C++语言的晦涩、难用等缺陷。Go语言吸收了C、C++强大的开发功能优势,继承了C、C++的编程风格,被广泛应用于构建数字基础设施类软件,以及图形/图像处理、移动应用、人工智能、机器学习等领域,广受国内外大型IT公司的推崇和关注。 本书除了讲解Go语言的基本开发知识,还提供了3个完整的实战项目及131个源码示例。另外,本书提供对应的练习与实验,方便读者对所学知识进行巩固和检验。 本书适合高等院校学生阅读,适合程序员自学,也适合培训机构使用。
刘瑜,高级信息系统项目管理师、软件工程硕士、CIO、硕士研究生企业导师,拥有20多年的C、ASP、Basic、Foxbase、Delphi、Java、C#、Python、Go等语言编程经验。曾开发商业项目20余个,承担省部级项目5个,发表论文10余篇。出版图书《战神——软件项目管理深度实战》《NoSQL数据库入门与实战》《Python编程从零基础到项目实战(微课视频版)》《Python编程从数据分析到机器学习实践》《算法之美——Python语言实现》《Python Django Web从入门到项目实战(视频版)》。
萧文翰,高级测试工程师,拥有9年的实战经验。曾参与开发多个项目,涉及通信、在线教育、在线医疗等领域,产品形态涵盖Android、iOS、Web等。出版图书《Flutter从0基础到App上线》《打造流畅的Android App》《深入浅出Android Jetpack》,参与校对Android App Hook and Plug-In Technology。4项国内专利发明人,CSDN博客专家,知乎专栏作家,腾讯课堂认证讲师。
董树南,工程力学硕士,西安近代化学研究所副研究员,从事软件开发工作7年,主要研究方向有Web 3D程序开发、数据分析及可视化等,主要技术栈有Python科学计算、Go语言Web开发,以及基于Vue和Three.js的Web 3D程序设计与实现。
1.强大的写作团队
?三酷猫系列图书的背后拥有一个强大的写作团队,保障了图书的品质。
?本书作者刘瑜老师从事代码开发和系统研究工作20余年,具有雄厚的写作基础和实战经验;萧文翰老师为资深博客专家、专栏作家,拥有丰富的项目实战经验和图书出版经验;董树南老师从事软件开发及研究工作多年,对Go语言Web开发有独到见解。三位老师默契配合,使本书将理论和实践完美地结合在一起!
2.有故事的书
?三酷猫的故事始终贯穿着本书内容的始末,为学习增加了乐趣,便于读者更好地吸收重点知识,将理论更好地运用在实践中!
3.从读者角度考虑问题
?一本好书值得品味,更能帮助读者解决工作中的实际问题。认真学习完本书的读者,应当可以独立实现Go语言应用开发。
前言
Go语言是Google公司推出的一门新兴编程语言,它继承了C、C++的优点,同时适当规避了它们的缺点,受到国内外“IT大厂”的广泛推崇,可用于数据分析、人工智能、移动应用、Web应用、物联网应用等领域,在编程语言排行榜中位居前列,并有继续上升的趋势。
本书作者刘瑜在2016年就开始注意到Go语言的优点和发展趋势,认为其简练的语法及强大的开发功能,必将使其在编程领域具有很强的竞争力,并被广大程序员喜爱。如今,Go语言已经“大放异彩”,被大量的国内外IT企业采用。作为践行通俗易懂、理论与实践结合、涵盖故事情节写作风格的技术作者,刘瑜老师希望能为Go语言的普及做一些力所能及的工作。于是,他与既是高级开发工程师又是多部IT图书作者的萧文翰老师,以及Go语言实战项目经理董树南老师,协同完成了本书的策划、编写工作。
写作特点
本书的写作特点如下。
(1)秉持“由浅入深、由易到难”的原则安排内容。第1部分为Go语言编程基础,从入门开始,逐步介绍其基础语法、基本功能、基本配套工具的使用,满足Go语言初学者打基础的要求;第2部分为Go语言项目实战,涵盖3个完整的项目,仔细分析每个项目的开发原理,让读者体验实际项目的实现过程,使读者具备初步的实战经验。
(2)书中融入“三酷猫”故事情节。每章的案例里都会出现“三酷猫”角色,带领读者一起开发每个案例。“三酷猫”是Three Cool Cats的中文译名,本书作者刘瑜在跟他的孩子一起观看电影《九条命》时,发现插曲Three Cool Cats非常酷,于是灵光一闪,决定让那只“三酷猫”陪伴大家快乐编程。
(3)内容展现形式丰富。本书为读者提供了图、表、注释、代码等丰富的内容展现形式,有利于读者更好地理解本书的内容。
目录
第1部分 Go语言编程基础
第1章 Go语言入门知识 2
1.1 Go语言简介 2
1.1.1 Go语言的产生 2
1.1.2 Go语言的特点与优势 3
1.2 Go语言开发工具的安装 5
1.2.1 Windows下的安装 6
1.2.2 Linux下的安装 10
1.2.3 macOS下的安装 13
1.3 第一个Go语言程序:Hello三酷猫 13
1.4 安装和使用集成开发环境 16
1.4.1 集成开发环境的安装 16
1.4.2 项目的创建、编译和运行 19
1.4.3 代码的出错提示及调试 22
1.4.4 代码风格约定 25
1.5 关键字和保留字 26
1.6 为代码添加注释 27
1.6.1 单行注释 27
1.6.2 多行注释 28
1.7 练习与实验 29
第2章 基础语法 30
2.1 声明 30
2.2 常量与变量 30
2.2.1 常量 31
2.2.2 变量 32
2.2.3 作用域 33
2.3 基本数据类型 34
2.3.1 整型 34
2.3.2 浮点型 36
2.3.3 复数型 38
2.3.4 布尔型 39
2.3.5 字符串型 39
2.4 运算符及优先级 42
2.4.1 算术运算符 42
2.4.2 关系运算符 43
2.4.3 逻辑运算符 44
2.4.4 位运算符 45
2.4.5 赋值运算符 47
2.4.6 指针运算符 49
2.4.7 优先级 49
2.4.8 案例:三酷猫求相加和 50
2.5 练习与实验 52
第3章 高级数据类型 53
3.1 指针类型 53
3.1.1 指针的概念 54
3.1.2 指针变量的声明 54
3.1.3 指针变量的赋值 55
3.1.4 访问指针变量所表示的变量的值 55
3.1.5 空(nil)指针 56
3.1.6 指向指针的指针变量 56
3.1.7 案例:解答三酷猫关于指针的困惑 57
3.2 数组类型 58
3.2.1 数组的概念 59
3.2.2 数组的声明与初始化 59
3.2.3 访问数组中的元素 62
3.2.4 多维数组 62
3.2.5 案例:三酷猫计算平均温度 63
3.3 切片类型 65
3.3.1 切片的概念 65
3.3.2 切片的声明与初始化 65
3.3.3 空(nil)切片 68
3.3.4 访问切片中的元素 68
3.3.5 多维切片 69
3.3.6 切片的append()函数 69
3.3.7 切片的copy()函数 72
3.4 集合类型 73
3.4.1 集合的概念 73
3.4.2 集合的声明与初始化 73
3.4.3 集合中元素的检索 75
3.4.4 向集合中添加、删除和修改元素 76
3.5 结构体类型 77
3.5.1 结构体的概念及特点 77
3.5.2 结构体的声明 77
3.5.3 结构体的使用 78
3.6 练习与实验 80
第4章 流程控制语法 81
4.1 分支结构 81
4.1.1 if语句 81
4.1.2 if…else…结构 83
4.1.3 多分支结构 83
4.2 switch…case…分支结构 84
4.3 循环结构 86
4.3.1 for循环的使用 86
4.3.2 多层循环结构 89
4.4 跳转控制语句 90
4.4.1 break语句 90
4.4.2 continue语句 91
4.4.3 goto语句 92
4.5 for-range结构 93
4.5.1 遍历数组与切片 93
4.5.2 遍历集合 94
4.5.3 遍历字符串 94
4.6 案例:三酷猫背九九乘法表 95
4.7 案例:三酷猫学算法之冒泡排序 95
4.8 练习与实验 96
第5章 函数 98
5.1 函数的声明 98
5.1.1 函数的声明格式 99
5.1.2 函数的参数 99
5.1.3 可变参数 101
5.1.4 函数的返回值 102
5.2 函数的调用 103
5.2.1 函数的调用格式 103
5.2.2 值传递与引用传递 104
5.2.3 案例:三酷猫识别数据类型 105
5.3 递归函数 106
5.4 匿名函数 107
5.4.1 匿名函数的声明 107
5.4.2 匿名函数的调用 108
5.4.3 将匿名函数赋值给变量 108
5.4.4 使用匿名函数实现回调 108
5.4.5 案例:三酷猫的下载“神器” 109
5.5 闭包 110
5.6 函数的延迟调用 112
5.6.1 延迟调用的使用和特点 112
5.6.2 使用延迟调用的注意事项 113
5.7 Go语言的异常处理 115
5.7.1 运行时宕机 116
5.7.2 宕机时恢复 117
5.8 案例:三酷猫的面积计算器 118
5.9 练习与实验 119
第6章 结构体 120
6.1 类型 120
6.1.1 自定义类型 121
6.1.2 自定义别名 121
6.2 结构体的基本使用 122
6.2.1 结构体的声明及实例化 122
6.2.2 匿名结构体 125
6.2.3 内存中的结构体变量 126
6.2.4 声明并实例化指针类型的结构体变量 127
6.3 构造函数与方法 128
6.3.1 使用结构体实现构造函数 128
6.3.2 方法与接收者 130
6.4 结构体的嵌套 133
6.4.1 嵌套结构体 133
6.4.2 嵌套匿名结构体 134
6.4.3 使用结构体实现继承 135
6.5 案例:三酷猫开银行 136
6.6 练习与实验 138
第7章 接口 140
7.1 接口概述 140
7.2 接口的定义和使用 141
7.2.1 接口的定义 141
7.2.2 接口的实现 142
7.2.3 调用接口方法 145
7.2.4 值接收者与指针接收者 146
7.2.5 实现多个接口 147
7.2.6 接口的嵌套 149
7.3 空接口的定义和使用 150
7.3.1 空接口的定义 150
7.3.2 空接口的使用 151
7.4 类型断言 152
7.5 练习与实验 153
第8章 包 154
8.1 包的声明与导入 154
8.1.1 包的声明 154
8.1.2 包的导入 155
8.2 Go应用程序的启动流程 159
8.3 创建包 160
8.4 Go语言中的常用内置包 161
8.4.1 文本格式化输出:fmt包 162
8.4.2 磁盘文件读/写:os包 171
8.4.3 网络服务:net包 180
8.4.4 JSON格式工具包:json包 185
8.4.5 时间和日期:time包 188
8.4.6 日志服务:log包 192
8.4.7 类型转换:strconv包 195
8.5 案例:三酷猫的文件夹递归复制工具 199
8.6 案例:三酷猫的二维码图片生成器 201
8.7 练习与实验 202
第9章 并发、并行与协程 204
9.1 概念 204
9.1.1 进程与线程 204
9.1.2 并发与并行 205
9.1.3 协程与线程 205
9.2 Go语言协程:Goroutine 205
9.2.1 使用Goroutine的优势 205
9.2.2 创建并启动单个Goroutine 206
9.2.3 创建并启动多个Goroutine 209
9.3 Go语言调度模型:GPM 210
9.3.1 任务调度发展简史 210
9.3.2 Go语言中的协程 211
9.3.3 GPM设计思想 211
9.4 runtime包 213
9.4.1 获取当前的操作系统类型和CPU类型 213
9.4.2 获取和设置CPU核心数量 214
9.4.3 让出资源 215
9.4.4 终止当前协程 216
9.5 在协程任务之间传递数据:Channel 216
9.5.1 通道类型和基本使用 217
9.5.2 无缓冲(同步)通道的使用 218
9.5.3 带缓冲通道的使用 219
9.5.4 判断通道是否关闭 220
9.5.5 单向通道的构建 221
9.6 select结构 221
9.7 加锁和原子操作 223
9.7.1 互斥锁 224
9.7.2 读/写互斥锁 224
9.7.3 原子操作 226
9.8 定时器 228
9.8.1 Timer 228
9.8.2 Ticker 230
9.9 案例:三酷猫筛选0~1000范围内的素数 230
9.10 练习与实验 232
第10章 反射 234
10.1 使用反射访问变量 234
10.1.1 获取变量的类型 235
10.1.2 获取变量的值 236
10.1.3 反射值的非空和有效性判定 237
10.2 使用反射访问指针表示的变量 237
10.3 使用反射访问结构体 238
10.4 使用反射修改值 240
10.5 使用反射调用函数 243
10.6 使用反射创建变量 244
10.7 练习与实验 244
第11章 命令行工具 246
11.1 编译命令go build 246
11.2 清理命令go clean 247
11.3 运行命令go run 248
11.4 代码格式化命令gofmt 249
11.5 编译并安装命令go install 250
11.6 获取包命令go get 250
11.7 练习与实验 251
第12章 数据库操作 252
12.1 MySQL 252
12.1.1 MySQL准备 253
12.1.2 增删改查(CRUD)操作 259
12.1.3 事务(Transaction)操作 262
12.2 Redis 263
12.2.1 Redis准备 264
12.2.2 Redis数据类型 267
12.2.3 使用Go语言对Redis进行操作 268
12.3 练习与实验 271
第2部分 Go语言项目实战
第13章 开发矩阵计算库 274
13.1 线性代数基础与项目功能设计 274
13.1.1 线性代数知识的简单回顾 274
13.1.2 项目功能设计 276
13.2 项目初始化与“鸭子类型” 277
13.2.1 初始化项目 277
13.2.2 定义matrix包的数据类型 278
13.2.3 面向对象与Go语言中的“鸭子类型” 278
13.3 矩阵计算包matrix的开发 281
13.3.1 定义matrix包中的接口 281
13.3.2 实现matrix包中的方法 282
13.3.3 测试matrix包 288
13.3.4 在其他项目中引用matrix包 292
13.4 项目总结 294
第14章 STL文件解析和MongoDB存储 295
14.1 STL文件简介与项目设计 295
14.1.1 项目功能需求设定 298
14.1.2 项目实现思路 299
14.2 开发utils包 299
14.2.1 错误处理文件handle.go 300
14.2.2 文件操作文件fileoper.go 301
14.3 开发用于模型文件处理的stl包 302
14.3.1 定义数据类型:type.go文件 303
14.3.2 解析STL文件数据:stl.go文件 304
14.3.3 安装和配置MongoDB 307
14.3.4 操作数据库:db.go文件 310
14.4 开发路由函数的handler包 314
14.4.1 定义响应数据格式类型的type.go文件 314
14.4.2 用于测试服务器程序连通性的ping.go文件 315
14.4.3 处理STL数据请求的stl.go文件 316
14.5 开发项目入口文件main.go并测试项目 321
14.5.1 开发main.go文件 322
14.5.2 使用Postman测试整个项目 324
14.6 项目总结 327
第15章 开发文件加密和解密程序 328
15.1 实现思路及功能设计 328
15.1.1 加密和解密过程的实现思路 329
15.1.2 功能设计 331
15.2 加密和解密程序的设计与实现 331
15.2.1 初始化项目 332
15.2.2 开发项目的utils包 332
15.2.3 对utils包中的关键函数进行测试 339
15.3 开发加密、解密和散列值计算的可执行程序 340
15.3.1 实现加密程序 340
15.3.2 实现解密程序 342
15.3.3 实现独立的散列值计算程序 343
15.4 项目总结 346
附录A 使用fmt.printf()函数格式化字符串 347
附录B ASCII编码 348
附录C 本书配套代码文件 353
不错
2022-10-13 02:12:04
内容很详实,有实例,对初学者很有帮助。跟随有经验的老师学习,可以更好的理解。希望读完这本书后,可以独立实现Go语言应用开发。
2022-09-17 12:19:21
fkk
2022-10-01 20:29:21
纸质精美,字迹清晰,正版,内容好,发货快,很满意。
2022-09-01 20:01:19