Go in Practice
Go in Practice
简介:
引言
《Go in Practice》一书(作者:Matt Butcher 和 Matt Farina,出版于 2016 年)在 Go 编程语言相关书籍中占有特殊地位。与许多从语法和理论开始的教材不同,这本书直接让读者投入解决实际任务。它面向那些已经熟悉 Go 基础(或其他类 C 语言)并希望学习在日常开发中应用该语言的人——从处理 HTTP 服务器到测试和部署。
本书内容
《Go in Practice》由 8 个部分组成,每个部分专注于 Go 的一个特定应用领域。作者不花时间解释基本语法——他们直接进入实践技巧。本书涵盖:
- 命令行操作——标志、参数、配置文件。
- HTTP 服务器和客户端——路由、中间件、JSON 处理、REST API。
- 数据库——连接 SQL 和 NoSQL、连接池、事务。
- 测试——单元测试、表格驱动测试、模拟、基准测试。
- 并发——goroutine、通道、并发模式、sync.WaitGroup。
- 打包和部署——构建、依赖管理、Docker、CI/CD。
- 安全性——加密、身份验证、注入防护。
本书适合谁
这本书面向实践开发者,他们已经至少编写过几个 Go 程序,并希望深化自己的知识。它将有助于:
- 从其他语言(Python、Java、C#)转向 Go 的开发者。
- 希望掌握地道的 Go 语言和最佳实践的工程师。
- 寻找构建可靠服务经过验证方案的团队领导和架构师。
读者将学到什么
阅读本书后,您将能够:
- 设计和实现具有正确错误处理的 HTTP 服务器。
- 通过标准包 database/sql 处理数据库。
- 使用内置的 testing 包编写干净且高效的测试。
- 使用 goroutine 和通道创建无数据竞争的并发程序。
- 配置容器中 Go 应用程序的构建和部署。
- 应用 Go 特有的设计模式(例如,函数式选项、中间件)。
优势
本书的主要优点是实践导向。每一章都包含可直接应用于实际项目的代码示例。作者不仅展示某个函数如何工作,还解释为什么应该选择这种方法。例如,在测试部分,他们演示了如何编写表格驱动测试以及使用 httptest 来检查 HTTP 处理器——这些是生产环境中真正需要的技能。
另一个优点是强调地道性。本书教授以 Go 风格编写代码,避免不必要的复杂性。作者展示了如何使用接口创建灵活的抽象,并提醒初学者常见的错误(例如,错误使用 goroutine)。
特别值得一提的是关于部署的部分。在 2016 年,容器化主题刚刚兴起,但作者已经包含了 Docker 示例和 CI/CD 的讨论。这使得这本书即使在多年后仍然具有现实意义。
推荐给谁
我向所有已经掌握 Go 基础并希望转向构建完整应用程序的人推荐《Go in Practice》。这本书对以下人群尤其有用:
- 用 Go 编写微服务或 Web 服务的人。
- 从事自动化和命令行工具的人。
- 希望学习如何正确且高效地测试 Go 代码的人。
如果您是零基础开始学习 Go,最好先阅读《The Go Programming Language》或官方教程。