看看我如何开始 Go 教程中的一小段 Go 代码 。(这是一个很棒的教程 , 也是学习 Go 的一个很好的起点 。)
如果您是 Go 新手,那么在阅读那个小代码片段时不会有太多让您感到惊讶的事情 。它展示了多个赋值、数据结构、指针、格式和一个内置的 HTTP 库 。当我第一次开始编程时,我一直喜欢使用 Python 更高级的功能 。Python 允许您在编写代码时获得相当的创意 。例如,您可以:
这些功能玩起来很有趣,但是,正如大多数程序员会同意的那样,在阅读别人的作品时,它们通常会使代码更难理解 。Go 迫使你坚持基础 。这使得阅读任何人的代码并立即了解发生了什么变得非常容易 。注意:当然,它实际上有多“容易”取决于您的用例 。如果你想创建一个基本的 CRUD API , 我仍然推荐 Django + DRF或 Rails 。
作为一门语言,Go 试图让事情变得简单 。它没有引入许多新概念 。重点是创建一种非常快速且易于使用的简单语言 。它唯一具有创新性的领域是 goroutine 和通道 。(100% 正确CSP的概念始于 1977 年,所以这项创新更多是对旧思想的一种新方法 。)Goroutines 是 Go 的轻量级线程方法,通道是 goroutines 之间通信的首选方式 。Goroutines 的创建非常便宜,并且只需要几 KB 的额外内存 。因为 Goroutine 非常轻量,所以有可能同时运行数百甚至数千个 。您可以使用通道在 goroutine 之间进行通信 。Go 运行时处理所有复杂性 。goroutines 和基于通道的并发方法使得使用所有可用的 CPU 内核和处理并发 IO 变得非常容易——所有这些都不会使开发复杂化 。与 Python/Java 相比,在 goroutine 上运行函数需要最少的样板代码 。您只需在函数调用前加上关键字“go”:
【go语言实现京东爬虫 go 语言 爬虫】Go 的并发方法很容易使用 。与 Node 相比,这是一种有趣的方法,开发人员必须密切关注异步代码的处理方式 。Go 中并发的另一个重要方面是竞争检测器 。这样可以很容易地确定异步代码中是否存在任何竞争条件 。
我们目前用 Go 编写的最大的微服务编译需要 4 秒 。与以编译速度慢而闻名的 Java 和 C++ 等语言相比 , Go 的快速编译时间是一项重大的生产力胜利 。我喜欢在程序编译的时候摸鱼,但在我还记得代码应该做什么的同时完成事情会更好 。
首先,让我们从显而易见的开始:与 C++ 和 Java 等旧语言相比 , Go 开发人员的数量并不多 。根据StackOverflow的数据,38%的开发人员知道 Java,19.3%的人知道 C++,只有4.6%的人知道 Go 。GitHub 数据显示了类似的趋势:Go 比 Erlang、Scala 和 Elixir 等语言使用更广泛,但不如 Java 和 C++ 流行 。幸运的是 , Go 是一种非常简单易学的语言 。它提供了您需要的基本功能,仅此而已 。它引入的新概念是“延迟”声明和内置的并发管理与“goroutines”和通道 。(对于纯粹主义者来说:Go 并不是第一种实现这些概念的语言,只是第一种使它们流行起来的语言 。)任何加入团队的 Python、Elixir、C++、Scala 或 Java 开发人员都可以在一个月内在 Go 上发挥作用 , 因为它的简单性 。与许多其他语言相比,我们发现组建 Go 开发人员团队更容易 。如果您在博尔德和阿姆斯特丹等竞争激烈的生态系统中招聘人员 , 这是一项重要的优势 。
对于我们这样规模的团队(约 20 人)来说,生态系统很重要 。如果您必须重新发明每一个小功能,您根本无法为您的客户创造价值 。Go 对我们使用的工具有很好的支持 。实体库已经可用于 Redis、RabbitMQ、PostgreSQL、模板解析、任务调度、表达式解析和 RocksDB 。与 Rust 或 Elixir 等其他较新的语言相比 , Go 的生态系统是一个重大胜利 。它当然不如 Java、Python 或 Node 之类的语言好,但它很可靠,而且对于许多基本需求,你会发现已经有高质量的包可用 。
推荐阅读
- asp.net4.5是什么,aspnet20
- java可以做恶搞代码吗,如何用java编写代码
- linux命令参数顺序,linux命令参数怎么快速记忆
- 钉钉会议直播高清,钉钉视频会议高清
- 计算器go语言 go语言简易计算器
- 电脑怎么识别usb网络,电脑怎么看usb连接的设备
- css新引入字体,css引入字体不显示
- 我想和你恋爱的小游戏,想跟你谈恋爱游戏攻略
- mysql怎么看表权限 查看mysql权限