全文共字,预计学习时长11分钟
图源:Unsplash在这个竞争越来越烈的社会,掌握一门新语言或新技能,意味着你能比别人多一个机会。
但万事开头难,学习新东西亦如此。如果开发员想学一门新的编程语言,该选择什么呢?
Go语言学起来简单得令人惊讶
当我第一次开始学习Go语言时,我正着手开发一个个人项目,为此我不得不掌握新的语法(我总是在学习一门新的编程语言时想出一个项目)。
我决定创建一个命令行应用程序来枚举子域,以辅助寻找资产中存在的漏洞奖金计划。为实现这一功能,与gobuster相似,该应用程序必须并行地发出多个HTTP请求,但我想通过增加一些功能(例如抓取HTML响应以获取与安全相关的有趣信息)来重新构建特定循环。
我尝试用go-routine来解决此问题,其中最具挑战性的一点是程序发出的HTTP请求数量未知,因此需要学习如何有效处理这些请求。
第一印象
很快,我发现语法异常熟悉,尽管我之前从未阅读过相关文档。在我看来,这些概念很直观(其他人可能不赞成)。Defer的使用直接明了。用于格式化字符串的fmt包好像解决了我之前未发现的问题。我开始认识到Go作为新兴编程语言近年来得到快速发展的原因。因此,我决定更深入地研究Go语言的初衷,以确定它是否值得花时间学习。
图源:Unsplash为什么开发Go语言
目的
Go语言由谷歌开发,目的是使多进程开发更加高效和安全,以提高服务器长期运行的可维护性、可靠性和有效性。对谷歌来说,该语言可解决其当前面临的编译时间过长和当今已在生产中取得普遍应用的大规模数据处理问题。谷歌希望开发出一种注重于可伸缩性、可读性和并发性的语言,而其他语言无法满足这些要求,因此诞生了Go语言。谷歌开发人员从现有的语言中提取了最简单明了的概念,并将这些概念改进和组合,最终形成了Go。以处理字符串的高效数据库——fmt数据包为例:
“fmt包使用类似于C的printf和scanf的函数,用来实现格式化的I/O。动词形式源自C,但更简单。”
这就是从一种成功且通用的语言(在本例中是C语言)中提取功能并对其进行改进的例子。
Go语言的并发机制基于CSP建模;使用通道可避免共享数据出现同步错误,这种信息交互方式更简单也更安全。
Go语言