前言



本书旨在使读者更轻松地使用和理解Go编程语言。Go作为一种编程语言,在构建时就考虑到了后端开发。随着摩尔定律的终结,更好更快的计算机已经不能满足开发的需求。因此,我们必须适应新常态——大规模、分布式系统、运行高度优化的软件栈。
这些分布式系统有着完全不同的硬件体系,也使得软件领域需要进行创新与改变。现代软件系统正在远离大型而单一的设计。相反,它们由许多较小的微服务组成,支持跨项目的代码重用和委托——所有这些都要求代码更干净。
随着软件领域的发展,对支持这种变化的基础设施的需求也在增加,从而产生了各种新的编程语言,这些语言是全新的,可以满足这种需求。Go就是其中一种语言,它具有适合基于微服务进行软件开发的特性,如较快的编译速度、较小的二进制文件和良好的可移植性。Go还有一些其独有的特性,例如Goroutine(并发执行的活动)和Channel(活动之间的连接),它们可以实现强大且易于使用的并发程序。
Go是后端开发中许多基础服务背后的引擎,例如Kubernetes、Docker、etcd、CockroachDB等。通过使用这些主流工具已经内置的相同语言,代码会更相似,并可以更好地使用基于企业级后端开发的开放源码的大型生态系统。
通过本书,我们希望读者能成为Go开发者,这样他们就可以利用Go作为解决问题的一个工具。但Go不仅仅是一种工具,它更是一种可以解决企业级问题的工具。因此,Go是编写代码的首选语言。
我们的目标不仅仅是教授Go语言,而是教授一种方法。在每一步中,都将Go与用于类似任务的其他主流编程语言(如Swift、C、Python和Java)进行比较,甚至深入到操作系统和CPU级别,从而展示这些语言是如何与计算机的硬件和软件交互的。这样做的目的有两点:
(1) 我们希望帮助使用其他语言的开发人员可以更容易地过渡到使用Go语言。
(2) 我们希望帮助读者更好地理解Go适合哪些任务,不适合哪些任务,以及它在内部是如何工作的和为什么是这样工作的。

著者
2024年2月