Go是一种运行高效、可扩展且富有成效的语言。有些程序员觉得使用Go工作很有趣,而另一些程序员则觉得它缺乏创造力,甚至无趣。其实这些立场并不矛盾。Go旨在解决谷歌软件开发中面临的问题,它虽然不是一种突破性的研究语言,但在大型软件工程项目中仍然是优秀的工具。
——Rob Pike,“Go at Google:Language Design in the Service of Software Engineering”( https://oreil.ly/3EItq )
笔者是Go语言的超级粉丝。世界各地的开发人员使用Go实现项目的数量令人赞叹。多年来,Go一直位居工程师们喜欢或想学习的名单前5位( https://oreil.ly/la9bx )。它被众多企业使用,包括苹果、美国运通、Cloudflare、戴尔、谷歌、Netflix、红帽、Twitch等科技巨头( https://oreil.ly/DSM73 )。当然,金无足赤,人无完人,Go也并非完美。笔者可能会更改、删除或添加一些东西到Go中。但如果你半夜叫醒笔者并让笔者快速编写可靠的后端代码,笔者会用Go去写。Go中有命令行接口,也有快速、可靠的脚本。初级程序员应该学习的第一门语言是什么?笔者的回答是:Go。物联网、机器人和微处理器的代码开发呢?答案也是Go [1] 。基础设施配置呢?截至2022年,笔者认为在模板健壮性方面没有比Go [2] 更好的工具。
别误会笔者的意思,有些语言具有优于Go的特性或生态。例如,图形用户界面(G U I)、游戏行业的高级渲染部分或在浏览器中运行的代码 [3] 。然而,一旦你意识到Go语言的诸多优势,就很难再回到其他语言了。
在第1章中,我们花了一些篇幅建立软件开发的效率意识。我们了解到我们的目标是以最少的开发量和成本编写高效的代码。本章将说明为什么Go语言能成为实现性能与质量平衡的可靠选择。
2.1节和2.2节将简明扼要地列出一些每个人都应该知道的Go事实,其中一些事实是笔者希望在2014年开始使用Go时就已知晓的。这两节涵盖的不仅仅是效率方面的基本知识,还将介绍Go语言相关知识。然而,如果你是这门语言的初学者,笔者建议你阅读这些内容,然后查看摘要中提到的其他资源。不妨试着用Go编写你的第一个程序,然后再回顾本书。另外,如果你认为自己是高级用户或专家,笔者建议你也不要跳过本章。笔者将解释一些关于Go鲜为人知的事实,你可能会觉得有趣或有争议(没关系,每个人都可以有自己的意见!)。
最后,我们将在2.3节中回答有关Go整体效能的问题,也就是将在2.3节对Go和其他语言进行对比。