发布于 2026-01-06 0 阅读
0

为什么要参加?DEV 全球展示挑战赛,由 Mux 呈现:展示你的项目!

为什么要去?

由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!

首次接触

我开始接触 Go 语言已经大约八年了。那时我遇到了一位同事,他离开了我的公司,去寻求职业生涯中的新挑战。有一天和他聊天时,他告诉我他们决定使用一种叫做 Go 的编程语言,他很高兴 Go 能如此轻松地完成一些用我们之前常用的 Java 语言实现起来非常粗糙,而且由于需要添加大量的层和重复代码,有时还会变得非常复杂的事情。就在那时,我让他给我演示一下 Go 是如何工作的,以及我是如何接触到 Go 的。

我尝试用HTTP服务器搭建一些API,几分钟之内就成功运行,并顺利地执行了curl请求。同年几个月后,我有机会参与了他所在的一个运维自动化项目,我们用Go语言搭建了多个API,并实现了它们之间的通信,还使用了AWS Lambda等一些同样用Go语言编写的AWS工具。项目非常成功,最终被一家大型公司收购。

之后,我在下一家(也是我现在的)公司继续使用 Go 语言,构建了一个真正的微服务环境,后端使用 Go 作为主要语言,取代了 Typescript 单体应用。

我们为什么选择 Go 语言Go?让我列举一下我们选择 Go 而不是其他编程语言的几个原因。

显现

有人code is very obvious开玩笑说这是一段枯燥的代码,这真是太棒了。

Go 语言确实非常出色fast language。由于 Go 是编译型语言,它的性能自然优于解释型语言或具有虚拟运行时的语言。编译速度极快,生成的二进制文件也非常小。这使得你可以每天多次部署,完美契合 DevOps 方法论。

Go 语言syntax is small but powerful简洁易学,大部分内容都能记住,这意味着你不需要花费大量时间查阅资料。它也非常简洁易读。即使是不熟悉 Go 语言的程序员,尤其是那些习惯了 C 风格语法的人,也能阅读 Go 程序并理解其运行逻辑。

Go 是一种strongly, statically typed language强类型语言。它包含 int、byte 和 string 等基本类型,以及结构体。与其他强类型语言一样,Go 的类型系统允许编译器捕获整类错误。Go 还内置了列表和映射类型,并且易于使用。

Go 语言支持接口interfaces,任何结构体都可以通过实现其方法来满足接口的要求。此外,Go 还支持一等函数,这使得你可以使用更函数式的编程风格来编写代码。

Go 语言的库非常完善standard library,因此 Go 程序通常依赖的外部库很少。它提供了许多方便的内置函数来处理基本数据类型。一些软件包使得搭建 Web 服务器、处理 I/O 和数据操作变得非常简单。标准库提供的 JSON 序列化和反序列化功能也十分便捷。

与其他语言相比, Go 语言让实现功能concurrency更加便捷。使用 goroutine 和 channel 几乎是轻而易举的事,同时还能实现更复杂的模式。

Go 的标准库提供了开箱即用的testing支持,无需额外依赖。如果您有一个名为 thing.go 的文件,请将测试写在另一个名为 thing_test.go 的文件中,然后运行“go test”。Go 将自动执行这些测试。

Gostatic analysis tools语言的工具众多且功能强大。其中一个特别值得一提的是gofmtconfig,它能根据 Go 推荐的代码风格格式化代码。由于代码格式统一且拥有优秀的标准库,您可以专注于创造业务价值,而无需讨论条件语句的放置位置或数据结构的定义方式。

Go 语言提供了memory safe动态对象的分配机制garbage collecting,而且比 C 和 C++ 更简单。此外,它还使指针的使用更加安全,因为它不允许指针运算。它还提供了使用值类型的选项。

Go语言
的编码风格遵循视线原则:函数的左侧边缘应该是正常执行路径(happy path),也就是函数执行的左侧边缘。其他任何内容,例如错误或特殊情况,都不属于正常执行路径,因此需要缩进。这样一来,代码就非常易读易懂,而且else在 99% 的情况下都不需要使用缩进。当你面对 Go 代码时,如果看到有一部分代码缩进,你就知道那是函数的出口,也就是正常执行路径的左侧边缘。

简单、干净、棒极了,走吧!

我希望我在这篇文章中解释的所有内容都清楚了,如果有什么地方不够清楚,或者有我没有涵盖的内容,请在这里留言,或者通过我个人资料中的社交媒体账号留言,我会很乐意回复。

文章来源:https://dev.to/charly3pins/why-go-23f4