帮助读者使用相关Go语言资源快速开发自己的谷歌程序;充分利用Go的轻量级运行和并发特性一步步展示如何开发定制应用程序;展示后端开发中的编程过程和功能、详细示例、代码示例和节省时间的技巧。在Windows、Linux或macOS设备上安装Go;开始编写自己的Go应用程序;定义变量并在程序中使用变量;使用语句、函数、循环和数组;使用Go模块简化程序开发;利用内置和第三方软件包;编写适合您自己编程需求的定制包;理解经典结构和算法;使用Go例程和并发性提高性能;导入外部代码即使代码不是用Go!
(1)我们希望让使用其他语言的开发人员更容易过渡到Go的世界。
(2)我们希望您能从其他编程语言和计算机的底层架构中有所领悟。这可以帮助您更好地理解Go适合哪些任务,不适合哪些任务,以及它在内部是如何工作的,为什么是这样工作的。
本书旨在使读者更轻松地使用和理解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月
第1章为什么使用Go1
1.1Go的设计目标2
1.2Go的使用平台3
1.3Go的编译器和运行时4
1.4并发性6第2章快速入门9
2.1安装Go10
2.1.1使用系统包管理器安装Go10
2.1.2安装预编译的二进制文件10
2.1.3从源码中安装Go12
2.2Go的基本概念13
2.2.1常规项目结构13
2.2.2第一个Go程序Hello, World!15
2.2.3变量17
2.2.4if语句和switch语句24
2.2.5循环28
2.2.6函数33
2.2.7结构体45
2.2.8接口51
2.2.9错误55第3章Go模块61
3.1使用内置包62
3.2使用第三方包73
3.3构建自己的包77第4章使用内置包83
4.1常见的数据结构和算法84
4.2Dijkstra路径查找算法84
4.3康威生命游戏102
4.4工作量证明116第5章并发127
5.1并发、线程和并行128
5.2Goroutine(Go协程)130
5.3通道133
5.4工作量证明: 第2部分150第6章互操作性161
6.1为什么互操作性很重要162
6.2与C代码的互操作165
6.3与Swift的互操作176