Golang,一见钟情。

2025-06-04

Golang,一见钟情。

本文最初发布在我的个人网站https://coder.today/go-go-go-flash-bang-d66f4c42eb7c上。在此期间,我用 Go 开发了一些库和小应用程序,甚至为 Go Tour 做了贡献,也修改了一些观点。但我会保留这篇文章的原貌,我喜欢不变性。

“快,快,快……闪光弹”

当我听到“开始”时,我总会回想起这件事。

简介

通常,人们有空的时候都会休息放松一下,但我是个怪咖,喜欢学习、实验和玩新事物。我有很多新爱好(今年早些时候我学会了撬锁,还开始玩手机摄影),所以我决定重拾我失落的编程热情。

如果{你像我一样(Web 或移动开发人员,出于某种原因避免使用低级语言和并发)请继续阅读,
否则你已经知道真相,请跳到最后并分享文章😁。}

我离开 Web 开发有几年了,一直在做 Unity3D(C#)和移动开发,所以自然而然地开始关注最新的 Web 趋势。我用MeteorJS(node + 热门代码 +~mongodb + 其他一些组件)ReactD3JS做了一些小项目。通过切换到 nodeJS,我放弃了 PHP,只用一种语言工作,通过共享代码,我的工作效率得到了极大的提升。

如果您是 JavaScript 开发人员,请查看这个 2017 年硬核播放列表}

Go——编程语言

在阅读有关新的架构风格、可扩展性和云的文章时,我发现了一种模式,大多数大公司(www 主干网)都以某种方式转向了 Go。

当我读到这篇文章时,我发现我们有很多共同点(我和 Go),这对于任何关系来说都是一个良好的开端。

  • 我们都很固执己见

  • 我们喜欢使用 JavaScript(构建 API 很容易,或者它们可以互补)

  • 我们非常关心开发人员的生产力

  • 我们喜欢KISS简单就是好(vs cpp)

  • 一种方法(惯用语、代码格式化)。方法越多,项目就越复杂,开发者的大脑、团队合作以及编译器的寿命就越长。

  • 我们不擅长使用 RegEx(但贡献者正在努力改进

  • 我们讨厌错误(所以我们强制执行编码规则)

  • 我们喜欢多任务处理和处理大数据

如果{您是 Gopher,请帮助我更快地学习并检查我的代码:}
bgadrian/data-structures
*data-structures - 抽象数据结构 Go 包,构建时考虑了性能和并发性,以学习 Go。

对我来说, Golang 还有几个优点:

  • 它是低级语言和高级语言的完美结合。我想要快速交付,完成任务,所以清理垃圾并不适合我。陡峭的学习曲线让我远离低级语言。

  • 它集成了单元测试——我正在寻找开始练习 TDD 的理由。

  • 社区——经过 60 多个小时的会议小组讨论和阅读论坛后,我可以说这是一个很好的社区。

  • 我想更多地参与开源社区,这是我的 Go 标志。

  • 它有自己的特色,还有很酷的吉祥物

  • 它创造了一个愉快的环境(良好的工具、编译器警告、习语等)。

  • WebAssembly学习编译语言将有助于获得优势并同时享受编写 JavaScript 和 WebAssembly 模块的乐趣。

我认为大多数“反对” Go 的理由都是“支持” Go 的理由,以下是一些例子:

  • 缺少异常之类的功能会导致更好的代码,谁会想要这种混乱呢

  • “当双方争论超过 15 分钟时,双方都是错的。”就此而言,这场战争持续了十多年,所以 Go坚持己见是件好事。不再有空格 vs. tab、函数 vs. 对象、for vs. while…… 开发人员编写相同的代码,编译器可以更好地优化它。

  • 重载——通常会创建太多相似的代码,而且缺乏多态性,因此在 Go 风格代码中用处不大。重载虽然能使代码“看起来很酷”,但调试、维护和解释起来却更困难。我认为接口(一个函数做一件事,可以与一个接口关联)加上显式转换就足够了。

实际的 C++ 代码实际的 C++ 代码

  • 代码是艺术/没有灵魂——我认为美不在于源格式,而在于系统/架构层面,用简单的解决方案解决难题。

  • 大多数原因很容易被忽略:他们太主观,不了解 Go 范式,他们的思维停留在 OOP 永无止境,或者他们将其与其他语言(如 C/C++,这不是替代品)进行比较,或者应用于 Go 范围之外的问题。

如果{你想通过练习katas成为一名更好的程序员,请查看 CodeWars }

Go 从 30 年的开发错误中吸取了教训

好了,我说对了!它回归了根源,像凤凰一样重生,更加美好,焕然一新。

我花了太多时间调试和修复 bug。我记得这些年来我修复过很多 bug、错误和反模式,其中很多都在 Go 的编译器规则和编码风格中得到了解决

大多数程序员都是凡人,都会有情绪,也会遇到糟糕的时刻,经历和背景各不相同,专业水平也各不相同,技术/环境也围绕着代码不断演变。糟糕的代码永远存在,但如果我们所使用的语言(Go)能够解决很多问题(甚至在问题出现之前就解决),那就更糟糕了!

如果{您想学习 Go,请查看我的第一步:}
学习 Golang 的第一步
*我如何学习 Go 作为我的新主要语言,我使用哪些资源和技术?*coder.today

完成,吐槽完毕,感谢阅读!

感谢ashleymcnamara,她的 gopher 面板激励了我开始做出贡献。

文章来源:https://dev.to/bgadrian/golang-it-was-love-at-first-sight-2lah
PREV
Golang 职位:在哪里可以搜索空缺职位
NEXT
CSS 有了新标志(还有新功能)!🎉