Go 图书越来越多,有些不错,有些不太好。我认为如果你正在学习 Go,你应该尽可能广泛地阅读:即使是最好的 Go 图书也只代表一种观点。
但是,你必须知晓从哪里开始,而且正如我的学生经常问“我应该读什么 Go 图书?”,我认为将我的建议收集在一个地方可能会有所帮助。这里我尽可能公正的描述,并说明可以从中学到什么。
本文作者是 John Arundel,这里提到的书中,有三本是本文作者写的。
注意:以下图书全部是国外的,虽然有些有中文翻译。这里不代表国人出版的 Go 图书就不好。
For the Love of Go[1] 适合没有 Go 或一般编程经验的人。本书循序渐进地方式介绍了 Go 中的测试驱动开发 (TDD)[2],并引导读者完成开发完整 Go 包的过程,测试优先。
本书介绍了 Go 最重要的基础知识:内置类型、结构、map 和切片,并展示了如何将它们用作真实世界应用程序(在线书店)的一部分。它涵盖了基本的控制结构,如函数、循环和条件,通过简单的阶段转到方法和指针,并引导读者了解一些有用的模式,如验证、未导出的类型和iota
常量。
整本书有几十个小挑战帮助读者练习他们刚刚学到的东西,包括完整的和经过测试的解决方案(也可以在 GitHub[3] 上找到)。
这是一本为有经验开发者准备的 Go 图书。如果你已经熟悉指针和并发等编程概念,并且想知道如何将这些知识转化为 Go,那么这本书很适合你。
它基本上涵盖了 Go 的各个方面,即使不总是很深入,也很详细,虽然它不一定是我推荐学习 Go 的第一本书,但它是一个非常宝贵的参考资料。
The Power of Go: Tools[4] 是为那些已经学会了 Go 基本知识,但现在想知道用它做什么的读者准备的。你如何设计包和 API?你如何测试不可测试的?好的软件是什么样的?什么是 Tao of Go[5],我们如何使用它?
本书以命令行工具为重点,涵盖了在 Go 中生成专业级软件所需的一切:flag 和参数、文件和文件系统、命令、shell 和管道、JSON 和 YAML,甚至 API 客户端。
最好的学习方式是边做边学,这本书里有很多练习、测试和小项目供你学习。这本书固执己见,毫不妥协,但不过激,偶尔也很有趣,书中用简洁的短语和经验法则(“面向显而易见的编程”)使课程令人难忘。
Concurrency in Go: Tools and Techniques for Developers[6],作者 Katherine Cox-Buday,对于任何使用 Go 编写并发程序的人来说都是必不可少的读物。这是一个高级主题,因此这本书不适合初学者,但它包含了有价值的信息、模式和实践。
尽管 Go 对并发具有出色的内置支持,但它的运行水平非常低。实际上,构建正确、可靠和高性能的并发程序是一件大事,并且需要经验和专业知识。作者大量提供了这些内容,概述了 Go 实现的理论 CSP 框架,并展示了它在实践中的使用方式,并提供了许多详细的示例和对幕后发生的事情的解释。
这本书有中文翻译版本:《Go语言并发之道》。
Let's Go Further[7],由 Alex Edwards 撰写,针对想要构建专业级 API 服务器的相当有经验的 Go 开发人员。它本质上由一个大型且功能完整的演示应用程序组成,详细解释,逐行工作,逐个功能。
事实上,演示应用程序将大大有助于启动和运行你自己的应用程序,并让你远离与规模、安全性或性能相关的任何重大问题。本书还涵盖了商业开发人员需要了解的许多重要的非 Go 主题:数据库、电子邮件、身份验证、构建、部署等。
Know Go: Generics[8] 是 Go 1.18+ 中新泛型特性的基本介绍。它用简单的语言解释了泛型函数和类型是什么,我们为什么需要它们,以及它们在 Go 中是如何工作的。
这本书适合初学者和有经验的程序员,对新特性和如何使用它们进行了全面的介绍,包括类型参数、约束、类型近似、泛型容器类型、新的slices
和maps
包以及基于 Map
,Reduce
和Filter
等的函数式编程。
本书展示了泛型在 Go 中的一些有趣应用,探讨了语言变化将如何影响我们编写程序的方式和熟悉的标准库 API,并回答了一些关于泛型的最常见问题,例如“使用泛型对性能有什么影响?” 和“我什么时候应该使用泛型函数而不是接口?”
由 Bill Kennedy 和 Hoanh An 编写的 Ultimate Go Notebook[9] 首次以书本形式展示了著名的 Ardan Labs Go 培训大纲。除了涵盖重要的 Go 主题(例如分析和跟踪、错误处理和并发)外,本书还旨在教你像软件工程师一样思考。
对于那些可能有 2-3 年 Go 经验的人来说,这是设计干净和可维护的软件、优雅的 API 和 CRISP[10] 代码的优秀课程。这一次,“终极”标题并非夸张:很难想到书中遗漏的任何重要内容。每个 Gopher 都应该知道的模式和实践的宝贵集合。
原文链接:https://bitfieldconsulting.com/golang/best-books
For the Love of Go: https://bitfieldconsulting.com/books/love
[2]测试驱动开发 (TDD): https://bitfieldconsulting.com/golang/tdd
[3]GitHub: https://github.com/bitfield/ftl-code
[4]The Power of Go: Tools: https://bitfieldconsulting.com/books/tools
[5]Tao of Go: https://bitfieldconsulting.com/golang/tao-of-go
[6]Concurrency in Go: Tools and Techniques for Developers: https://www.amazon.com/gp/product/1491941197?ie=UTF8&tag=cribbcorne-20&camp=1789&linkCode=xm2&creativeASIN=1491941197
[7]Let's Go Further: https://lets-go-further.alexedwards.net/
[8]Know Go: Generics: https://bitfieldconsulting.com/books/generics
[9]Ultimate Go Notebook: https://courses.ardanlabs.com/courses/ultimate-go-notebook
[10]CRISP: https://bitfieldconsulting.com/golang/crisp-code
我是 polarisxu,北大硕士毕业,曾在 360 等知名互联网公司工作,10多年技术研发与架构经验!2012 年接触 Go 语言并创建了 Go 语言中文网!著有《Go语言编程之旅》、开源图书《Go语言标准库》等。