具体描述
国外最经典的Go语言著作,Go语言编程的先驱者Mark Summerfield的实践经验总结。
这是一本Go语言实战指南,帮你了解Go语言,按Go语言的方式思考,以及使用Go语言来编写高性能软件。
作者展示了如何编写充分利用Go语言突破性的特性和惯用法的代码,以及Go语言在其他语言之上所做的改进,并着重强调了Go语言的关键创新。
注重实践教学,每章都提供了多个经过精心设计的代码示例。
由国内第一个核心服务完全采用Go语言实现的团队——七牛团队核心成员翻译。
作者简介
Mark Summerfield Qtrac公司创始人,独立的培训讲师、顾问、技术编辑,Go、Python、C++、Qt和PyQt方面的技术作家。他的著作包括Rapid GUI Programming with Python and Qt、C++ GUI Programming with Qt 4(与Jasmin Blanchette合著)、Programming in Python 3和Advanced Qt Programming等。
许式伟——七牛云存储CEO,开源爱好者,发布过十余个C++开源项目,拥有超过15年的C/C++开发经验。
吕桂华——七牛云存储联合创始人,拥有十余年的C/C++大型项目开发经验,也曾在Java和.NET平台上探索多年。
徐 立——七牛云存储首席布道师,前盛大创新院高级研究员。
何李石——七牛云存储布道师。
七牛云存储技术团队是国内第一个核心服务完全采用Go语言实现的团队。
目录信息
第1章 5个例子 1
1.1 开始 1
1.2 编辑、编译和运行 3
1.3 Hello Who? 6
1.4 大数字——二维切片 8
1.5 栈——自定义类型及其方法 12
1.6 americanise示例——文件、映射和闭包 18
1.7 从极坐标到笛卡儿坐标——并发 28
1.8 练习 33
第2章 布尔与数值类型 35
2.1 基础 35
2.2 布尔值和布尔表达式 39
2.3 数值类型 40
2.3.1 整型 42
2.3.2 浮点类型 46
2.4 例子:statistics 53
2.4.1 实现一个简单的统计函数 54
2.4.2 实现一个基本的HTTP服务器 55
2.5 练习 58
第3章 字符串 60
3.1 字面量、操作符和转义 61
3.2 比较字符串 63
3.3 字符和字符串 65
3.4 字符串索引与切片 67
3.5 使用fmt包来格式化字符串 69
3.5.1 格式化布尔值 73
3.5.2 格式化整数 74
3.5.3 格式化字符 75
3.5.4 格式化浮点数 75
3.5.5 格式化字符串和切片 76
3.5.6 为调试格式化 78
3.6 其他字符处理相关的包 80
3.6.1 strings包 81
3.6.2 strconv包 86
3.6.3 utf8包 90
3.6.4 unicode包 91
3.6.5 regexp包 92
3.7 例子:m3u2pls 101
3.8 练习 106
第4章 集合类型 108
4.1 值、指针和引用类型 108
4.2 数组和切片 115
4.2.1 索引与分割切片 119
4.2.2 遍历切片 119
4.2.3 修改切片 121
4.2.4 排序和搜索切片 125
4.3 映射 128
4.3.1 创建和填充映射 129
4.3.2 映射查询 131
4.3.3 修改映射 132
4.3.4 键序遍历映射 132
4.3.5 映射反转 133
4.4 例子 134
4.4.1 猜测分隔符 134
4.4.2 词频统计 136
4.5 练习 141
第5章 过程式编程 144
5.1 语句基础 144
5.1.1 类型转换 147
5.1.2 类型断言 148
5.2 分支 149
5.2.1 if语句 150
5.2.2 switch语句 151
5.3 for循环语句 158
5.4 通信和并发语句 160
5.5 defer、panic和recover 166
5.6 自定义函数 171
5.6.1 函数参数 172
5.6.2 init()函数和main()函数 175
5.6.3 闭包 176
5.6.4 递归函数 178
5.6.5 运行时选择函数 181
5.6.6 泛型函数 183
5.6.7 高阶函数 187
5.7 例子:缩进排序 192
5.8 练习 197
第6章 面向对象编程 199
6.1 几个关键概念 199
6.2 自定义类型 201
6.2.1 添加方法 203
6.2.2 验证类型 207
6.3 接口 209
6.4 结构体 217
6.5 例子 224
6.5.1 FuzzyBool——一个单值自定义类型 224
6.5.2 Shapes——一系列自定义类型 229
6.5.3 有序映射——一个通用的集合类型 240
6.6 练习 248
第7章 并发编程 251
7.1 关键概念 252
7.2 例子 256
7.2.1 过滤器 256
7.2.2 并发的Grep 260
7.2.3 线程安全的映射 266
7.2.4 Apache报告 271
7.2.5 查找副本 278
7.3 练习 285
第8章 文件处理 287
8.1 自定义数据文件 287
8.1.1 处理JSON文件 290
8.1.2 处理XML文件 295
8.1.3 处理纯文本文件 301
8.1.4 处理Go语言二进制文件 307
8.1.5 处理自定义的二进制文件 309
8.2 归档文件 317
8.2.1 创建zip归档文件 317
8.2.2 创建可压缩的tar包 319
8.2.3 解开zip归档文件 321
8.2.4 解开tar归档文件 322
8.3 练习 324
第9章 包 326
9.1 自定义包 326
9.1.1 创建自定义的包 327
9.1.2 导入包 333
9.2 第三方包 334
9.3 Go命令行工具简介 335
9.4 Go标准库简介 336
9.4.1 归档和压缩包 336
9.4.2 字节流和字符串相关的包 336
9.4.3 容器包 337
9.4.4 文件和操作系统相关的包 339
9.4.5 图像处理相关的包 341
9.4.6 数学处理包 341
9.4.7 其他一些包 341
9.4.8 网络包 342
9.4.9 反射包 343
9.5 练习 346
附录A 后记 348
附录B 软件专利的危害 350
附录C 精选书目 353
· · · · · · (收起)
读后感
这本是目前最好的golang书籍之一. 许丑自己写的黑书很简单,内容也少,基本上是轻轻点水般. 这本相比更殷实想尽,还有些作者的经验技巧,常用包说明,显得更有诚意。 更重要的,他没有偏向web,带领一大波人先入为主的走入偏门.go要得到发展,偏向web是没有前途的.
这本是目前最好的golang书籍之一. 许丑自己写的黑书很简单,内容也少,基本上是轻轻点水般. 这本相比更殷实想尽,还有些作者的经验技巧,常用包说明,显得更有诚意。 更重要的,他没有偏向web,带领一大波人先入为主的走入偏门.go要得到发展,偏向web是没有前途的.
这本是目前最好的golang书籍之一. 许丑自己写的黑书很简单,内容也少,基本上是轻轻点水般. 这本相比更殷实想尽,还有些作者的经验技巧,常用包说明,显得更有诚意。 更重要的,他没有偏向web,带领一大波人先入为主的走入偏门.go要得到发展,偏向web是没有前途的.
Your Hands-On Guide to Go, the Revolutionary New Language Designed for Concurrency, Multicore Hardware, and Programmer Convenience Today,s most exciting new programming language, Go, is designed from the ground up to help you easily leverage all the power o...
这本是目前最好的golang书籍之一. 许丑自己写的黑书很简单,内容也少,基本上是轻轻点水般. 这本相比更殷实想尽,还有些作者的经验技巧,常用包说明,显得更有诚意。 更重要的,他没有偏向web,带领一大波人先入为主的走入偏门.go要得到发展,偏向web是没有前途的.
用户评价
**3. 性能优化的秘密武器** 作为一名对程序性能有较高要求的开发者,我一直在寻找能够提升程序效率的有效方法。《Go语言程序设计》中的性能优化章节,可以说是我一直苦苦寻觅的“秘密武器”。作者并没有仅仅停留在理论层面,而是通过深入剖析Go语言的内存模型、垃圾回收机制,以及编译器的工作原理,为我们揭示了性能瓶颈可能存在的地方。我印象最深刻的是关于slice和map的性能考量。通过具体的代码演示,我看到了不当的slice扩容和map访问可能带来的性能损耗,以及如何通过预分配容量来有效避免。书中还详细介绍了pprof工具的使用,这是一款非常强大的性能分析工具,能够帮助我快速定位程序的性能瓶颈。通过对CPU和内存使用的分析,我学会了如何找出代码中效率低下的部分,并有针对性地进行优化。读完这部分,我感觉自己就像拥有了一双“透视眼”,能够看到程序运行的内部机制,从而写出更高效、更优化的Go代码,这对我今后的项目开发来说,无疑是一笔宝贵的财富。
**5. 从入门到实战的稳健阶梯** 这本书《Go语言程序设计》为我提供了一个从零基础到掌握Go语言核心技能的稳健阶梯。我是一名初学者,对编程概念的理解还在逐步建立的过程中。这本书的结构设计非常合理,每一章都建立在前一章的基础上,循序渐进,让我在学习过程中不会感到 overwhelming。作者的语言风格朴实而清晰,避免了不必要的术语堆砌,使得抽象的概念变得易于理解。我尤其欣赏书中大量的代码示例,这些示例不仅仅是语法演示,更像是实际项目中的代码片段,让我能够立即将学到的知识应用到实践中。通过跟随书中的例子进行编码,我不仅巩固了对语言特性的理解,还逐步培养了良好的编程习惯。更重要的是,这本书并没有止步于基础知识的讲解,而是通过一些小型项目的实例,展示了如何将这些知识融会贯通,构建完整的应用程序。这种从基础到应用的过渡,让我对未来独立开发项目充满了信心。这本书在我编程学习的道路上,起到了至关重要的指引作用,让我能够扎实地迈出Go语言学习的第一步。
**4. 简洁高效的生态圈探索** 《Go语言程序设计》并非仅仅局限于语言本身的特性,它还巧妙地引导读者探索了Go语言丰富的生态圈。书中关于标准库的讲解,让我大开眼界。那些隐藏在 `net/http`、`encoding/json`、`database/sql` 等包中的强大功能,让我对Go语言的“自带电池”理念有了更深刻的理解。我曾花费大量时间去寻找和集成第三方库来完成一些看似基础的功能,而这本书让我明白,很多时候,Go的标准库就已经足够强大,甚至比许多第三方库更加高效和稳定。此外,作者还简要介绍了Go Modules的使用,这对于项目依赖管理来说,简直是革命性的。告别了 GOPATH 的混乱,我能够更轻松地管理项目的依赖关系,构建和部署也变得更加顺畅。阅读这本书,我感觉自己不仅仅是学会了一门编程语言,更是掌握了一套高效的工具和开发流程,能够迅速融入到Go语言庞大而充满活力的开发社区中。
**2. 结构化思考与软件设计的启蒙** 在阅读《Go语言程序设计》的过程中,我最受益匪浅的莫过于它对于软件设计和结构化思考的引导。不同于许多只关注语法细节的书籍,这本书的作者并没有回避“为什么”的问题,而是深入浅出地阐述了Go语言的设计哲学,以及如何通过Go的特性来实现更优雅、更健壮的软件。书中关于接口设计的章节,对我启发尤为深刻。作者通过多个实际案例,展示了如何利用接口来解耦代码,提高代码的可测试性和可扩展性。我曾经在项目中因为没有充分理解接口的威力,导致代码耦合严重,修改起来步履维艰。这本书就像及时雨,让我茅塞顿开,学会了如何用“鸭子类型”的思维去编写更灵活的代码。此外,关于错误处理的部分,也让我重新审视了传统的异常处理方式。Go语言简洁而强大的错误处理机制,让我能够清晰地追踪问题的根源,而不是被层层嵌套的try-catch块所困扰。这本书不仅仅是在教我如何写Go代码,更是在教我如何思考,如何构建可维护、易扩展的软件系统,这对我职业生涯的影响将是长远的。
**1. 踏入并发世界的惊喜之旅** 一直对并发编程心存向往,也尝试过其他语言的并发模型,但总感觉抓不住核心,直到我翻开了这本《Go语言程序设计》。这本书并没有像其他教材那样一开始就堆砌复杂的并发概念,而是以一种循序渐进的方式,从Goroutine这个轻量级线程的引入开始,一点点揭开Go语言在并发处理上的精妙之处。我特别喜欢作者用生动形象的比喻来解释Channel的工作原理,那种“管道”传输数据的方式,瞬间就让我理解了线程间安全通信的关键。书中还详细讲解了Mutex、RWMutex等同步原语的应用场景,并通过大量实际代码示例,让我能够清晰地看到在多线程环境下,如何避免竞态条件,保证数据的一致性。更让我惊喜的是,书中还触及了context包的使用,这对于管理并发任务的生命周期,尤其是在网络请求和分布式系统中,起到了至关重要的作用。读完这部分内容,我感觉自己不再是那个对并发感到畏惧的初学者,而是对如何构建高效、可靠的并发系统有了更清晰的认识,仿佛打开了一个全新的世界。
翻过
翻译的太挫!
稍微有些啰嗦,不是特别适合有编程基础的人,对于新手估计又会有些难,把练习的代码都写了一遍,更深入的等实际用的时候再说吧。
此书无甚价值,只当语法手册了
此书无甚价值,只当语法手册了