为什么要学习 Go 语言
Go 于 2009 年 11 月 10 日正式开源。它是一种静态强类型、编译型、并发型,并具有垃圾回收功能的高级编程语言,由谷歌设计。由于其性能和高效的资源利用率,已成为 Web 开发和微服务的热门选择。
Go 语言的诞生
已经有那么多编程语言了,为何还要再造一门 Go 语言呢?Go 语言的诞生,可以说是谷歌为了解决编程语言的痛点而发明的。
Go 语言的三位发明人,分别是:Robert Griesemer(罗伯特.格利茨默)、Rob Pike(罗伯.派克)和 Ken Thompson(肯.汤普森)。
在当时,谷歌内部主要使用 C++ 来构建各种系统,但 C++ 复杂性高,编译速度慢,在编写服务端程序时不便支持并发。诸如此类的问题让这三位大佬产生了设计一门新编程语言的想法,这门新语言应该是能够给程序员带来快乐、匹配未来硬件发展趋势并适合用来开发谷歌内部大规模程序的。
Go 语言的设计目标就是解决其他编程语言常见的一些弊端:
- 性能问题:一些高级编程语言可能在性能方面受到限制,因为它们的抽象层次较高,导致运行时性能不如低级语言。Go 通过编译型语言的特性和并发性能优势来解决这个问题。
- 依赖管理:一些编程语言,尤其是 C 和 C++,在管理依赖关系和外部库时可能面临复杂性。Go 引入了 Go Modules 机制,能更有效地管理依赖关系,解决了这个问题。
- 笨重:某些编程语言可能过于复杂,有大量的语法和特性,这可能使学习和使用变得困难。Go 的设计目标之一是保持简洁和清晰,降低学习曲线。
- 垃圾回收和并行计算:对于一些系统编程语言,如 C 和 C++,垃圾回收和并行计算等基础功能可能缺乏内置支持,需要开发者手动处理。Go 通过内置垃圾回收和 goroutine 等机制来简化这些任务。
- 多核支持:在多核计算机上利用所有核心的能力是一项挑战。Go 的 goroutine 和 channel 机制使并发编程变得更加容易,允许开发者有效地利用多核处理器。
Go 语言的发展
- 2009 年 11 月 10 日,Go 正式开源
- 2012 年 3 月 28 日,go1.0 正式发布
- 2015 年 8 月 19 日,go1.5 发布。这个版本具有里程碑意义,因为从这个版本开始,Go 实现了自举,即无须再依赖 C 编译器
- 2017 年 8 月 24 日,go1.9 发布,增加了类型别名
- 2018 年 8 月 24 日,go1.11 发布。这个版本也是具有里程碑意义,因为它引入了新的 Go 包管理机制:Go Modules
- 2021 年 2 月 16 日,go1.16 发布,Go Modules 成为了默认包管理机制
- 2022 年 3 月 15 日,go1.18 发布,引入了泛型 Generics,同时还引入了多模块工作区 Workspaces 和模糊测试 Fuzzing
- 2024 年 2 月 6 日,go1.22 发布。目前最新版本是 go1.22.4 (released 2024-06-04)
Go 语言吉祥物
每个项目都需要纪念品,需要一个吉祥物来纪念这个项目,Go 语言也不例外。
在发布后,Go 语言就拥有了自己的吉祥物:一只名为“Go Gopher”的地鼠。这个吉祥物是 Rob Pike(罗伯.派克)夫人 Renee French 设计的,从此地鼠成为世界各地 Go 程序员的象征,Go 程序员也被昵称为 Gopher。
Go Gopher 的形象是一只可爱的地鼠,代表了 Go 语言的运行发速度和学习速度快,而且因其挖洞速度快的特点,象征着 Go 语言的强大性能和简洁语法。
Go 应用领域
- 系统级应用程序
- Web 应用程序
- 云原生应用程序(docker、k8s)
- 实用工具和命令行工具
- 分布式系统
- 数据库实现
- 区块链
- 游戏
使用 Go 的互联网公司:
为啥选择 Go
Go 有着近 C 的执行性能和近解释型语言的开发效率,以及近乎于完美的编译速度。很多人将 Go 称为 21 世纪的 C 语言,因为 Go 不仅拥有 C 的简洁和性能,而且针对多处理器系统应用程序的编程进行了优化,很好的提供了 21 世纪互联网环境下服务端开发的各种实用特性。
- 语法简单上手快,学习曲线平缓
- 性能高,编译快,开发效率也不低
- 原生支持并发,充分利用多核
- 跨平台,具有垃圾回收功能
- 丰富的标准库,完善的工具链
- 部署方便,编译包小,静态链接没有依赖
起飞!🛫️