具体描述
这本书从整体的写作风格来说,会以介绍 Go 语言特性为主,示例则尽量采用作者平常的实践,而不是一个没有太大实际意义的语法示范样例。
本书作者背景极强,许式伟为原金山WPS首席架构师、曾是盛大创新院研究员,目前是国内Go语言实践圈子公认的Go语言专家。参与本书写作的几位作者都是实际用Go语言开发的项目的开发人员,有较强的实战经验。
本书以介绍Go语言特性为主,示例则尽量采用作者开发团队平常的实践,内容涉及内存管理(堆和栈)、错误处理、OOP、并发编程等关键话题。 这本书面向的读者是所有打算用Go语言的开发者,主要包括目前使用C、C++、Java、C#的开发人员,甚至一些Python、PHP开发人员也可能转为 Go 程序员。
作者简介
许式伟
七牛云存储CEO,曾任盛大创新院资深研究员、金山软件技术总监、WPS Office 2005首席架构师。开源爱好者,发布过包括WINX、TPL等十余个C++开源项目,拥有超过15年的C/C++开发经验。在接触Go语言后即可被其大道至简、少即是多的设计哲学所倾倒。七牛云存储是国内第一个吃螃蟹的团队,核心服务完全采用Go语言实现。
吕桂华
七牛云存储联合创始人,曾在金山软件、盛大游戏等公司担任架构师和部门经理等职务,在企业级系统和大型网游平台领域有较多涉猎。拥有十余年的C/C++大型项目开发经验,也曾在Java和.NET平台上探索多年。同样被Go语言的魅力所吸引而不可自拔,希望能为推广这门优秀的语言尽自己的绵薄之力。
目录信息
第1章 初识Go语言
1.1 Go语言简史
1.2 语言特性
1.3 “Hello, world!”
1.4 编译环境
1.5 开发工具
1.6 工程管理
1.7 问题追踪和调试
1.8 如何寻求帮助
本章小结
第2章 顺序编程
2.1 变量、常量和类型
2.1.1 变量
2.1.2 常量
2.1.3 类型
2.2 流程控制
2.2.1 条件语句
2.2.2 选择语句
2.2.3 循环
2.2.4 跳转语句
2.3 函数
2.3.1 函数调用
2.3.2 不定参数
2.3.3 多返回值
2.3.4 匿名函数与闭包
2.4 错误处理
2.4.1 error接口
2.4.2 defer
2.4.3 panic和recover
本章小结
第3章 面向对象编程
3.1 类型系统
3.1.1 给类型添加方法
3.1.2 值语义和引用语义
3.2 结构体
3.2.1 初始化
3.2.2 匿名组合
3.2.3 成员可访问性
3.3 接口
3.3.1 其他语言中的接口
3.3.2 非侵入式接口
3.3.3 接口赋值
3.3.4 接口查询
3.3.5 类型查询
3.3.6 Any类型
本章小结
第4章 工程管理
4.1 Go命令行工具
4.2 代码风格
4.3 工程组织
4.4 单元测试
4.5 文档管理
4.6 工程构建
4.7 包的管理与分发
4.8 跨平台开发
4.8.1 Go语言的跨平台能力
4.8.2 交叉编译
4.8.3 Android支持
本章小结
第5章 并发编程
5.1 初识Goroutine
5.1.1 基本用法
5.1.2 Goroutine通信
5.2 Channel
5.2.1 基本用法
5.2.2 关闭
5.2.3 变量的传递
5.2.4 单向Channel
5.2.5 超时处理
5.3 多核并行化
5.4 同步机制
5.4.1 sync包简介
5.4.2 同步锁
5.4.3 Once类型
本章小结
第6章 网络编程
6.1 HTTP编程
6.1.1 客户端编程
6.1.2 开发HTTP服务器
6.2 JSON
6.2.1 JSON简介
6.2.2 编码
6.2.3 解码
6.2.4 未知类型的解码
6.2.5 流式读写
6.3 网站开发
6.3.1 一个最简单的网站
6.3.2 开发一个相册网站
6.3.2.1 新建工程
6.3.2.2 实现网络服务
6.3.2.3 网页模板渲染
6.3.2.4 缓存
6.3.2.5 错误处理
6.3.2.6 防止程序崩溃
6.3.2.7 资源分离
6.3.2.8 重构
6.4 更多资源
本章小结
第7章 进阶话题
7.1 Go语言中的内存管理
7.2 反射
7.3 语言交互性CGO
7.4 链接符号
7.5 Goroutine实现机制
7.6 接口的奥秘
本章小结
第8章 开发工具
8.1 Go语言开发工具
8.2 gEdit
8.3 Goclipse - 使用Eclipse开发和调试Go程序
8.4 VIM
8.5 Nodepad++,Windows上的Go开发环境搭建
8.6 GolangIDE
本章小结
附录 Go语言包参考
· · · · · · (收起)
读后感
【go语言程序设计】和【go语言编程】这两本书我都看过。 前者偏向于学院派教科书,语言表述非常啰嗦。 后者偏向于工程派,我在看完书之后写代码的时候,有疑问了会经常翻看【go 语言编程】查找对应的内容看,作者表述言简意赅,一翻我就能找到我想要的答案,让人感觉是自己想问...
【go语言程序设计】和【go语言编程】这两本书我都看过。 前者偏向于学院派教科书,语言表述非常啰嗦。 后者偏向于工程派,我在看完书之后写代码的时候,有疑问了会经常翻看【go 语言编程】查找对应的内容看,作者表述言简意赅,一翻我就能找到我想要的答案,让人感觉是自己想问...
第一章还可以,到第二章发现了些错误,有可能是排版原因,有多处语焉不详的地方,更可恶的是发现了好多“等”,国人出技术书的风格,让我猜啊! -----------------------------------------------------------------------------------------
本来想给一星的,但是考虑到go语言书很少就多给了一颗星。该书对于初步了解go语言是足够了,但本书没有清晰的,由浅入深的章节设计,而是多内容耦合到一起了,还爱和其他语言做类比,还好我有非常强的C语言基础,还有半吊子的java,python基础,否则该陷入泥潭了
用户评价
这本书的配套资源和社区互动也是它超越其他同类书籍的重要砝码。虽然评价这本书本身的内容,但不得不提的是,作者在书的末尾提供了一个非常详尽的GitHub仓库链接,里面包含了所有示例代码的最新版本,以及一些书上未详细展开的扩展实验。更重要的是,作者似乎非常活跃于相关的技术论坛和社区。我曾就书中一个关于错误处理机制的微妙边界条件向社区提问,很快就收到了来自一位似乎是作者团队成员的详细解答,这极大地增强了我对这本书长期价值的信心。一本优秀的技术书籍,其价值不应止于纸张本身,而在于它所构建的知识生态系统。这本书显然在这方面投入了巨大的精力,让读者在遇到学习瓶颈时,总能找到可靠的后援支持,这种“有人在乎”的感觉,对于自学编程的人来说,无疑是巨大的鼓舞。
这本书的案例代码质量高得惊人,这一点必须着重强调。很多技术书为了凑篇幅,会放一些为了演示某个特性而写得过于简陋的“玩具代码”,但这本书里的每一个例子都像是直接从真实项目里提炼出来的精华片段。它们不仅能够准确地演示所讲授的概念,而且代码结构清晰、命名规范,完全可以作为我们自己项目代码的参考模板。我特别欣赏作者在每一个代码块后面紧跟的“深入解析”部分。这个解析不仅仅是逐行解释代码的功能,更重要的是它会深入探讨为什么选择这种实现方式,替代方案的优缺点是什么,以及在什么场景下应该如何取舍。这种批判性思维的引导,极大地提升了我的代码审美能力。我甚至发现,仅仅是模仿书中代码的组织结构和注释风格,我的日常编程效率都得到了肉眼可见的提升。
我之前尝试过几本市面上常见的入门书籍,但都因为讲解方式过于碎片化或者理论性太强而半途而废。这本书给我的最大惊喜在于它的“由浅入深,步步为营”的叙事逻辑。它不是简单地罗列语法点,而是像一个经验丰富的老工程师在手把手地带你走一遍完整的开发流程。从最基础的变量类型和控制结构讲起,到后续的接口设计和标准库的巧妙运用,过渡得非常自然。尤其是对Go语言特有的垃圾回收机制和运行时(Runtime)的剖析,作者并没有用晦涩难懂的术语去吓唬人,而是用贴近日常生活的比喻来解释这些底层原理,让人豁然开朗。读到中间部分时,我发现作者甚至会穿插一些实际项目中的“陷阱”和“最佳实践”,这对于我这种渴望快速投入实战的读者来说,简直是宝藏。它教会我的不仅仅是“怎么写代码”,更是“为什么要这样写代码”,这种思维层面的提升比记住一堆代码片段重要得多。
这本书的装帧设计实在是太吸引人了,封面那种深邃的蓝色调,配合着简洁有力的字体,一眼看上去就给人一种专业、沉稳的感觉。我拿到手的时候,首先就被它的纸张质感所打动,不是那种廉价的反光纸,而是略带哑光效果,拿在手里沉甸甸的,让人觉得这绝对是一本值得花时间去啃的好书。内页的排版也相当出色,行距和字号的拿捏恰到好处,即便是长时间阅读,眼睛也不会感到疲劳。更值得称赞的是,作者在一些关键概念的解释上,特别用了不同颜色的字体或者加粗处理,这种视觉上的引导非常有效地帮助我们这些初学者快速抓住重点。比如,初学者最容易混淆的几个并发模型的设计思路,书中通过不同层次的图示来辅助说明,立体感很强,不像有些技术书籍,光是文字堆砌,读起来干巴巴的。我感觉,光是这本书的物理形态和视觉呈现,就已经为接下来的学习过程定下了一个非常积极的基调。这种对细节的关注,体现了编者对读者的尊重,也让我对书中的内容质量有了更高的期待。
对于一个追求深度理解的技术学习者来说,寻找一本能够平衡理论深度和工程实践的“圣经”是极其困难的。然而,这本书似乎在这两者之间找到了一个完美的平衡点。它没有沉溺于过于底层的汇编或内存布局的细节(这部分内容往往让初学者望而却步),但它也没有停留在“API调用手册”的层面。它把语言规范、并发哲学和企业级应用架构这三者有机地结合起来。例如,在讲述Channel的使用时,它不仅说明了如何发送和接收数据,更深入地探讨了如何利用Channel来构建可靠的分布式消息队列原型,并详细分析了在面对高并发吞吐量时,应该如何调整缓冲区大小以避免不必要的阻塞。这种“知道原理、应用原理、优化原理”的层层递进,使得学习体验非常扎实和充实,让人感到每翻过一页,知识的厚度都在增加。
go的确是毫无学院派痕迹......
#多看# 又初步了解了一门不太可能用到的语言。。。
草草翻阅,不评价。
在图灵买的电子书,在 iphone 5 上用横屏看完,很不错。衡量一个代码的复杂性最简单的标准就是读懂所需的时间,而不是行数或者字符数。go 语言在解决了高并发,高性能问题的同时保持了很高的易读性,一是过程式的写法让绝大部分人容易理解,二是与主流的工业语言的血缘关系可以进一步降低学习成本。可惜的是js在客户端和服务端发展太快,不知道 go 能否跟上。
给力,靠谱