1. Golang 的粉丝群正在增长
  2. Golang 开发:从入门到精通的 5 步
  3. 答案是…

早在 2013 年,当我第一次了解 Golang 编程语言时,我就面临着一种“to be or not to be”的问题。

虽然它不像哈姆雷特那样具有生命意义,但对我来说仍然几乎是形而上学的。

当任何项目的几乎所有技术都捆绑在一起时,为什么我们需要另一种技术?

作为一名 Java 后端开发人员,我对此非常好奇,并决定试一试。

掌握一种或多种辅助语言以轻松处理副任务总是有用的,因此 Go - 静态类型的编译编程语言 - 似乎是一个很棒的候选者。

所以最大的问题是 Go or not to Go?

我将分享我对为什么应该认真考虑 Golang 的见解,并将解释(不加糖衣)为什么它是一门具有挑战性但美丽的语言。

Golang 的粉丝群正在增长

让我们从事实开始:下图表明 Golang 目前正在抢尽风头。

【译】Golang 的艺术、哲学和科学 #导入Word文档图片#_golang


在 2019 年,GO 正在迅速成为开发人员最喜欢的技术,从而使其在既定技术(例如 C ++,Python,JavaScript等)中的存在感,

GitHub 指出,是根据 pull 请求的数量,GO 是排名前五的语言之一。

如此受欢迎有几个原因。我会举一些例子。

【译】Golang 的艺术、哲学和科学 #导入Word文档图片#_开发人员_02


我特别喜欢 Go 的是,它倾向于组合而不是继承。制作复杂且多层的阶级继承结构不是一个好主意,因为它使您的代码变得不那么灵活且难以扩展。

因此,Golang 接口(方法集)系统消除了子类和基于类型的继承。

尽管如此,Golang 成功的基石还是并发性。它的概念包含在 Go 谚语中,这是一组 Golang 哲学概念。

Go 中的接口与 Java 中的接口非常不同。类型不需要显式声明。任何提供接口中命名的方法的类型都可以被视为实现。

【译】Golang 的艺术、哲学和科学 #导入Word文档图片#_golang_03


Go 使用 goroutines 和通道而不是线程,仅消耗 2KB 内存。

因此,与 Java 线程相比,有机会通过更轻量级和可扩展的部署来转换数百万个 goroutine。

Goroutines 之间的通信由 Channel提供,这意味着只有一个 Goroutine 可以在一定时间访问数据。

这种方法使我们能够创建异步并行程序,执行任务比以顺序编写的方式更快。

然而,关于 Go 的一切都不是那么美好。当我深入了解 Golang 时,发现它充满了惊喜。

Golang 开发:从入门到精通的 5 步

当你开始学习另一种语言时,总会有挫败感。

关于 Go 的主要抱怨之一是它的错误处理方法,有些人觉得这很有趣。与许多编程语言不同,它没有标准的异常逻辑。

GO 不允许开发人员在尝试捕获块中包裹代码。按照惯例,函数将错误作为其最后一个返回值。

因此,if err!= nil 语句,要在每个步骤中正确处理它。

if err != nil {
// handle the error
}

很多开发人员不喜欢这种看似不变的 nil 检查。就是为什么我经常将 Golang 的学习曲线与悲伤的五个阶段进行比较。

【译】Golang 的艺术、哲学和科学 #导入Word文档图片#_golang_04


每一行 Go 代码都伴随着一种失望的感觉。我想,“根本不能有这么多的错误检查!”

但是,如果我们记得 Golang 是为 Google 创建的,那么可以在这样的决定中找到一些逻辑。

想象:数百个项目,成千上万的开发商,数百万个代码线。

为了确保一致性和简单性,创作者摆脱了一些“冗余”。例如,没有泛型,这会导致代码的重用级别降低。

【译】Golang 的艺术、哲学和科学 #导入Word文档图片#_golang_05


如您所见,简单性似乎相当复杂。如果有这么多其他语言都有“正常”的错误处理,我为什么要忍受这个?

尽管我对 Go 很生气,但我决定朝着“从此幸福快乐”迈进。创作者推荐以下内容:

【译】Golang 的艺术、哲学和科学 #导入Word文档图片#_开发人员_06


从理论上讲,这听起来不错,但在实践中,通常没有适当的上下文可以让开发人员正确处理错误。

如果有泛型,那可以帮助解决这个难题。通过利用空接口 (interface {}) 功能,可以实现某种通用机制。

然而,它带来了很多痛苦,作者自己承认:

【译】Golang 的艺术、哲学和科学 #导入Word文档图片#_golang_07


在这种不确定的状态下,许多开发人员与 Golang 分手了。

就个人而言,我认为这是一个巨大的错误,因为您不应该在语言本身中寻找答案。

答案是……

现在,我已经用 Go 写了 3 年了。我可以说,其中一件棘手的事情是,接受阶段不会到来,直到你去进行一个语言可以证明自己的非常大的项目。

Go 是可能性的艺术。这不是关于什么是最好的或什么是正确的。这与语言无关。这是关于你可以做些什么来让它发挥作用。

【译】Golang 的艺术、哲学和科学 #导入Word文档图片#_开发人员_08


一旦你尝试过这个,你会发现虽然还是一个有争议的事情,但在实践中很漂亮。​​