登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入   新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2024年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書

『簡體書』深入理解Go语言(第3版)

書城自編碼: 4099090
分類:簡體書→大陸圖書→計算機/網絡程序設計
作者: [美]米哈里斯·托卡洛斯 著 刘晓雪 译
國際書號(ISBN): 9787302684510
出版社: 清华大学出版社
出版日期: 2025-04-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:HK$ 185.9

我要買

share:

** 我創建的書架 **
未登入.


新書推薦:
无人机飞行原理与气象环境(第2版)
《 无人机飞行原理与气象环境(第2版) 》

售價:HK$ 31.9
理解性别差距:美国女性经济史
《 理解性别差距:美国女性经济史 》

售價:HK$ 90.2
艺术哲学
《 艺术哲学 》

售價:HK$ 96.8
从助理到合伙人-青年律师业务进阶指南
《 从助理到合伙人-青年律师业务进阶指南 》

售價:HK$ 74.8
明清白话文献与吴语语法
《 明清白话文献与吴语语法 》

售價:HK$ 217.8
祖宗之法:北宋前期政治述略(修订二版)
《 祖宗之法:北宋前期政治述略(修订二版) 》

售價:HK$ 107.8
德州扑克自学一本通
《 德州扑克自学一本通 》

售價:HK$ 55.0
数学分析(第一卷)(第7版)(精装典藏版)
《 数学分析(第一卷)(第7版)(精装典藏版) 》

售價:HK$ 97.9

 

編輯推薦:
《深入理解Go语言(第3版)》全面介绍了Go语言开发的核心内容,从基础到高级特性如并发、泛型及gRPC应用,并结合实例讲解,是掌握Go语言编程的理想选择。
內容簡介:
《深入理解Go语言(第3版)》详细阐述了Go语言开发的基本解决方案,主要包括Go语言快速入门、基本数据类型、复合数据类型、反射和接口、Go包和函数、告诉UNIX系统该做什么、Go语言中的并发性、构建Web服务、TCP/IP和WebSocket、REST APIs、代码测试与性能分析、与gRPC协同工作、Go语言中的泛型等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。
關於作者:
Mihalis Tsoukalos是一位颇有成就的作家,同时也是Unix管理员、程序员、DBA和数学家,他喜欢写技术文章和学习新技术。他的研究兴趣包括编程语言、数据库和操作系统。他拥有佩特拉斯大学的数学学士学位和英国伦敦大学学院的信息技术硕士学位。他曾为Sys Admin、MacTech、C/ c 用户期刊、Linux期刊、Linux用户与开发者、Linux Format、Linux Voice等撰写各类技术文章。
目錄
第 1 章 Go 语言快速入门 1
1.1 Go 语言简介 1
1.1.1 Go 语言的历史 2
1.1.2 为什么选择 UNIX 而不是 Windows 3
1.1.3 Go 语言的优缺点 4
1.1.4 go doc 和 godoc 实用程序 5
1.2 Hello World! 6
1.2.1 函数简介 7
1.2.2 包简介 7
1.3 运行 Go 代码 8
1.3.1 编译 Go 代码 8
1.3.2 像脚本语言那样使用 Go 语言 8
1.3.3 导入格式和编码规则 9
1.4 Go 语言的重要特性 10
1.4.1 定义和使用变量 10
1.4.2 控制程序流 13
1.4.3 使用 for 循环和 range 进行迭代 15
1.4.4 获取用户输入 17
1.4.5 使用 error 变量区分输入类型 21
1.4.6 理解 Go 语言的并发模型 23
1.5 开发 Go 语言中的 which(1)工具 25
1.6 记录信息 27
1.6.1 log.Fatal()和 log.Panic() 29
1.6.2 写入自定义日志文件 30
1.6.3 在日志条目中打印行号 32
1.7 Go 语言中的泛型 33
1.8 开发一个基本的电话簿应用程序 35
1.9 本章练习 38
1.10 本章小结 39
1.11 附加资源 39
第 2 章 基本数据类型 40
2.1 error 数据类型 40
2.2 数值数据类型 43
2.3 非数值数据类型 46
2.3.1 字符串、字符和 rune 46
2.3.2 日期和时间 53
2.4 Go 常量 58
2.5 将相似数据分组 61
2.5.1 数组 61
2.5.2 切片 61
2.6 指针 79
2.7 生成随机数 82
2.7.1 生成随机字符串 83
2.7.2 生成安全的随机数 85
2.8 更新电话簿应用程序 85
2.9 本章练习 87
2.10 本章小结 87
2.11 附加资源 87
第 3 章 复合数据类型 88
3.1 映射 88
3.1.1 存储到一个 nil 映射 89
3.1.2 迭代映射 91
3.2 结构体 92
3.2.1 定义新的结构体 92
3.2.2 使用 new 关键字 93
3.2.3 结构体切片 95
3.3 正则表达式和模式匹配 97
3.3.1 Go 语言中的正则表达式 97
3.3.2 匹配姓名和姓氏 98
3.3.3 匹配整数 99
3.3.4 匹配记录中的字段 100
3.4 改进电话簿应用程序 101
3.4.1 处理 CSV 文件 101
3.4.2 添加索引 105
3.4.3 电话簿应用程序的改进版本 106
3.5 本章练习 114
3.6 本章小结 114
3.7 附加资源 114
第 4 章 反射和接口 115
4.1 反射 115
4.1.1 Go 结构体的内部结构 117
4.1.2 使用反射修改结构体值 119
4.1.3 反射的 3 个缺点 120
4.2 类型方法 121
4.2.1 创建类型方法 121
4.2.2 使用类型方法 122
4.3 接口 125
4.3.1 sort.Interface 接口 127
4.3.2 空接口 130
4.3.3 类型断言和类型开关 131
4.3.4 map[string]interface{}映射 135
4.3.5 error 数据类型 138
4.3.6 编写自己的接口 142
4.4 处理两种不同的 CSV 文件格式 147
4.5 Go 语言中的面向对象编程 151
4.6 更新电话簿应用程序 154
4.6.1 设置 CSV 文件值 155
4.6.2 使用 sort 包 156
4.7 本章练习 158
4.8 本章小结 158
4.9 附加资源 158
第 5 章 Go 包和函数 159
5.1 Go 包 159
5.2 函数 162
5.2.1 匿名函数 163
5.2.2 返回多个值的函数 163
5.2.3 可以命名的函数返回值 164
5.2.4 接收其他函数作为参数的函数 165
5.2.5 函数可以返回其他函数 167
5.2.6 可变参数函数 168
5.2.7 defer 关键字 172
5.3 开发自己的包 174
5.3.1 init()函数 175
5.3.2 执行顺序 175
5.4 使用 GitHub 存储 Go 包 176
5.5 用于操作数据库的包 178
5.5.1 了解数据库 179
5.5.2 存储 Go 包 183
5.5.3 Go 包的设计 184
5.5.4 Go 包的实现 186
5.5.5 测试 Go 包 193
5.6 模块 197
5.7 创建更好的包 197
5.8 生成文档 198
5.9 GitLab Runners 和 Go 205
5.9.1 初始版本的配置文件 205
5.9.2 最终版本的配置文件 207
5.10 GitHub Actions 和 Go 209
5.11 版本控制工具 211
5.12 本章练习 213
5.13 本章小结 213
5.14 附加资源 213
第 6 章 告诉 UNIX 系统该做什么 215
6.1 stdin、stdout 和 stderr 216
6.2 UNIX 进程 216
6.3 处理 UNIX 信号 217
6.4 文件 I/O 220
6.4.1 io.Reader 和 io.Writer 接口 220
6.4.2 使用和滥用 io.Reader 和 io.Writer 221
6.4.3 缓冲和非缓冲文件 I/O 225
6.5 读取文本文件 226
6.5.1 逐行读取文本文件 226
6.5.2 逐字读取文本文件 227
6.5.3 逐字符读取文本文件 229
6.5.4 从/dev/random 读取 230
6.5.5 从文件中读取特定数量的数据 231
6.6 写入文件 232
6.7 处理 JSON 数据 235
6.7.1 使用 Marshal()和 Unmarshal() 235
6.7.2 Go 结构体和 JSON 237
6.7.3 以流的形式读取和写入 JSON 数据 238
6.7.4 美观打印 JSON 记录 239
6.8 处理 XML 数据 241
6.9 处理 YAML 数据 243
6.10 viper 包 245
6.10.1 使用命令行标志 246
6.10.2 读取 JSON 配置文件 248
6.11 cobra 包 252
6.11.1 基于 3 条命令的实用工具 253
6.11.2 添加命令行标志 254
6.11.3 创建命令行别名 255
6.11.4 创建子命令 255
6.12 在 UNIX 文件系统中查找循环 256
6.13 Go 1.16 中的新特性 259
6.13.1 嵌入文件 259
6.13.2 ReadDir 和 DirEntry 262
6.13.3 io/fs 包 264
6.14 更新电话簿应用程序 266
6.14.1 使用 cobra 266
6.14.2 存储和加载 JSON 数据 267
6.14.3 实现 delete 命令 268
6.14.4 实现 insert 命令 269
6.14.5 实现 list 命令 269
6.14.6 实现 search 命令 269
6.15 本章练习 271
6.16 本章小结 271
6.17 附加资源 272
第 7 章 Go 语言中的并发性 273
7.1 进程、线程和协程 274
7.2 Go 调度器 274
7.2.1 GOMAXPROCS 环境变量 276
7.2.2 并发和并行 277
7.3 协程 278
7.3.1 创建一个协程 278
7.3.2 创建多个协程 279
7.3.3 等待协程完成 279
7.3.4 Add()和 Done()调用的次数不同 281
7.3.5 使用协程创建多个文件 283
7.4 通道 283
7.4.1 向通道写入和从通道读取 284
7.4.2 从已关闭的通道接收 287
7.4.3 作为函数参数的通道 288
7.5 竞态条件 288
7.6 select 关键字 291
7.7 协程超时 293
7.7.1 main()中的协程超时 293
7.7.2 main()之外的协程超时 294
7.8 重新审视 Go 通道 295
7.8.1 缓冲通道 296
7.8.2 nil 通道 298
7.8.3 工作池 299
7.8.4 信号通道 303
7.9 共享内存和共享变量 305
7.9.1 sync.Mutex 类型 306
7.9.2 sync.RWMutex 类型 308
7.9.3 atomic 包 311
7.9.4 使用协程共享内存 312
7.10 闭包变量和 go 语句 315
7.11 context 包 317
7.12 semaphore 包 322
7.13 本章练习 325
7.14 本章小结 325
7.15 附加资源 325
第 8 章 构建 Web 服务 326
8.1 net/http 包 326
8.1.1 http.Response 类型 326
8.1.2 http.Request 类型 327
8.1.3 http.Transport 类型 328
8.2 创建一个 Web 服务器 329
8.3 更新电话簿应用程序 332
8.3.1 定义 API 332
8.3.2 实现处理程序 333
8.4 将指标公开与 Prometheus 341
8.4.1 runtime/metrics 包 341
8.4.2 公开指标 343
8.4.3 读取指标 351
8.4.4 将指标放入 Prometheus 352
8.4.5 在 Grafana 中可视化 Prometheus 指标 356
8.5 开发 Web 客户端 357
8.5.1 使用 http.NewRequest()改进客户端 359
8.5.2 为电话薄服务创建客户端 362
8.6 创建文件服务器 368
8.7 对 HTTP 连接进行超时设置 371
8.7.1 使用 SetDeadline() 371
8.7.2 在客户端设置超时周期 372
8.7.3 在服务器端设置超时周期 375
8.8 本章练习 376
8.9 本章小结 377
8.10 附加资源 377
第 9 章 TCP/IP 和 WebSocket 378
9.1 TCP/IP 378
9.2 net 包 380
9.3 开发 TCP 客户端 380
9.3.1 利用 net.Dial()开发 TCP 客户端 380
9.3.2 利用 net.DialTCP()开发 TCP 客户端 382
9.4 开发 TCP 服务器 384
9.4.1 利用 net.Listen()开发 TCP 服务器 384
9.4.2 利用 net.ListenTCP()开发 TCP 服务器 386
9.5 开发 UDP 客户端 389
9.6 开发 UDP 服务器 391
9.7 开发并发 TCP 服务器 394
9.8 使用 UNIX 域套接字 396
9.8.1 UNIX 域套接字服务器 396
9.8.2 UNIX 域套接字客户端 399
9.9 创建 WebSocket 服务器 401
9.9.1 服务器的实现 402
9.9.2 使用 websocat 405
9.9.3 使用 JavaScript 406
9.10 开发 WebSocket 客户端 409
9.11 本章练习 413
9.12 本章小结 414
9.13 附加资源 414
第 10 章 REST APIs 415
10.1 REST 简介 415
10.2 开发 RESTful 服务器和客户端 417
10.2.1 RESTful 服务器 418
10.2.2 RESTful 客户端 426
10.3 创建一个功能性的 RESTful 服务器 435
10.3.1 REST API 435
10.3.2 使用 gorilla/mux 436
10.3.3 使用子路由器 437
10.3.4 与数据库协作 437
10.3.5 测试 restdb 包 442
10.3.6 实现 RESTful 服务器 444
10.3.7 测试 RESTful 服务器 448
10.4 开发 RESTful 客户端 451
10.4.1 创建命令行客户端的结构 452
10.4.2 实现 RESTful 客户端命令 453
10.4.3 创建 RESTful 客户端 457
10.4.4 处理多个 REST API 版本 459
10.5 上传和下载二进制文件 459
10.6 使用 Swagger 进行 REST API 文档编写 464
10.6.1 为 REST API 编写文档 466
10.6.2 生成文档文件 469
10.6.3 提供文档文件服务 470
10.7 本章练习 472
10.8 本章小结 473
10.9 附加资源 473
第 11 章 代码测试与性能分析 474
11.1 代码优化 474
11.2 基准测试代码 475
11.2.1 重写 main()函数 476
11.2.2 基准测试缓冲写入和读取 477
11.2.3 benchstat 实用工具 481
11.2.4 错误定义的基准测试函数 481
11.3 代码性能分析 482
11.3.1 命令行应用程序的性能分析 483
11.3.2 HTTP 服务器性能分析 486
11.3.3 Go 性能分析器的 Web 界面 488
11.4 go tool trace 实用程序 488
11.4.1 从客户端追踪 Web 服务器 491
11.4.2 访问 Web 服务器的所有路由 494
11.5 测试 Go 代码 499
11.5.1 编写./ch03/intRE.go 测试 499
11.5.2 TempDir()函数 500
11.5.3 Cleanup()函数 501
11.5.4 testing/quick 包 503
11.5.5 超时测试 505
11.5.6 测试代码覆盖率 506
11.5.7 发现 Go 语言中的不可达代码 509
11.6 测试基于数据库后端的 HTTP 服务器 510
11.7 模糊测试 516
11.8 交叉编译 517
11.9 使用 go:generate 518
11.10 生成示例函数 521
11.11 本章练习 522
11.12 本章小结 523
11.13 附加资源 523
第 12 章 与 gRPC 协同工作 524
12.1 gRPC 简介 524
12.2 定义接口定义语言文件 525
12.3 创建 gRPC 服务器 528
12.4 开发 gRPC 客户端 532
12.5 本章练习 536
12.6 本章小结 536
12.7 附加资源 537
第 13 章 Go 语言中的泛型 538
13.1 泛型简介 538
13.2 约束条件 540
13.3 使用泛型定义新数据类型 543
13.4 接口和泛型 546
13.5 反射和泛型 549
13.6 本章练习 551
13.7 本章小结 551
13.8 附加资源 552
附录 553
內容試閱
本版包含了许多激动人心的新主题,如编写 RESTful 服务、使用 WebSocket 协议,以及利用 GitHub Actions 和 GitLab Actions 进行 Go 项目的开发,还有泛型内容和许多实用工具的开发。此外,我努力使本版比第 2 版更加精简,并以更自然的结构安排内容,使其阅读起来更加轻松快捷,特别适合那些忙碌的专业人士。
我也努力在书中融入了适量的理论知识和实践内容——但只有您,亲爱的读者,才能评判我是否成功。请务必尝试每章末尾的练习,并在有任何建议或想法时,及时与我联系。
适用读者
本书是为那些希望将 Go 语言知识提升到更高水平的中级 Go 程序员准备的。对于那些希望学习 Go 语言,同时不想重复学习编程基础的经验丰富的其他编程语言开发者来说,本书也会非常有用。
本书内容
第 1 章首先讨论了 Go 语言的历史、Go 的重要特性及 Go 的优势。接着介绍了 godoc 实用程序和 go doc 工具,并解释了如何编译和执行 Go 程序。之后,讨论了打印输出和获取用户输入、处理命令行参数及使用日志文件。最后,开发了一个基本的电话簿应用程序版本,并将在接下来的章节中不断改进它。
第 2 章讨论了 Go 语言的基础数据类型,包括数值型和非数值型,以及将相似数据类型的数据分组的数组和切片。本章还涉及了 Go 语言的指针、常量及处理日期和时间。最后是关于生成随机数,以及使用随机数据更新电话簿应用程序。
第 3 章从映射(maps)开始,然后深入结构体和结构体关键字(struct)。此外,还讨论了正则表达式、模式匹配及处理 CSV 文件。最后,通过为电话簿应用程序添加数据持久性来改进它。
第 4 章讲述了反射、接口以及类型方法,这些是附加到数据类型上的功能。本章还包括使用 sort.Interface 接口对切片进行排序、空接口的使用、类型断言、类型开关及错误数据类型。此外,讨论了 Go 如何模拟一些面向对象的概念,然后对电话簿应用程序进行了改进。
第 5 章全面介绍了包、模块以及作为包主要元素的函数。在本章中,创建了一个用于与 PostgreSQL 数据库交互的 Go 包,为其编写了文档,并解释了有时难以掌握的 defer 关键字的使用。此外还包含了关于使用 GitLab Runners 和 GitHub Actions 进行自动化的信息,以及如何为 Go 二进制文件创建 Docker 镜像。
第 6 章是关于系统编程的,包括处理命令行参数、处理 UNIX 信号、文件输入输出、io.Reader 和 io.Writer 接口,以及使用 viper 和 cobra 包等主题。此外,讨论了处理 JSON、XML 和 YAML 文件,创建了一个方便的命令行工具用于发现 UNIX 文件系统中的循环,并讨论了在 Go 二进制文件中嵌入文件,以及 os.ReadDir()函数、os.DirEntry 类型和 io/fs 包的使用。最后,更新了电话簿应用程序以使用 JSON 数据,并在 cobra 包的帮助下将其转换为一个合适的命令行工具。
第 7 章讨论了 goroutines、channels 和 pipelines。介绍了进程、线程和 goroutines 之间的区别,sync 包,以及 Go 调度器的运作方式。此外,探索了 select 关键字的使用,讨论了 Go channels 的各种“类型”,以及共享内存、互斥锁、sync.Mutex 类型和 sync.RWMutex 类型。最后其余部分讨论了 context 包、semaphore 包、工作池、如何对 goroutines 设置超时,以及如何检测竞态条件。
第 8 章讨论了 net/http 包,Web 服务器和 Web 服务的开发,将指标暴露给 Prometheus,在 Grafana 中可视化指标,开发 Web 客户端和创建文件服务器。最后还把电话簿应用程序转换为 Web 服务,并为其创建了一个命令行客户端。
第 9 章涉及 net 包、TCP/IP,以及 TCP 和 UDP 协议,还有 UNIX 域套接字和 WebSocket 协议。最后开发了许多网络服务器和客户端。
第 10 章全面介绍了 REST API 和 RESTful 服务的使用。学习如何定义 REST API,开发强大的并发 RESTful 服务器,以及作为 RESTful 服务客户端的命令行工具。最后介绍了 Swagger 用于创建 REST API 文档,并学习了如何上传和下载二进制文件。
第 11 章讨论了代码测试、代码优化和代码性能分析,交叉编译、基准测试 Go 代码、创建示例函数、使用 go:generate,以及寻找不可达的 Go 代码。
第 12 章全面介绍了在 Go 中使用 gRPC。gRPC 是由 Google 开发的 RESTful 服务的替代品。同时阐述了如何定义 gRPC 服务的方法和消息,如何将它们转换为 Go 代码,以及如何为该 gRPC 服务开发服务器和客户端。
第 13 章是关于泛型,以及如何使用新语法编写泛型函数和定义泛型数据类型。
附录讲述了 Go 垃圾收集器的运作,并阐述了这个 Go 组件如何影响代码性能。
如何利用本书
本书需要一台安装了相对较新版本的 UNIX 计算机,这包括任何运行 macOS X、macOS 或 Linux 的机器。大部分展示的代码在不作任何修改的情况下也可以在 Microsoft Windows 机器上运行。
为了最大限度地利用本书,您应该尽快尝试将每一章的知识应用到自己的程序中,并看看哪些有效,哪些无效。正如我之前告诉您的,尝试解决每章末尾的练习题,或者创建您自己的编程问题。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2025 (香港)大書城有限公司  All Rights Reserved.