Go语言的9大优势和3大缺点

  • 时间:
  • 浏览:1

导致 4:并发性&通道

对不要 应用来说,编程语言只是 简单充当了其与数据集之间的胶水。语言三种 的性能常常无关轻重。

来源:51CTO

Go 语言对 protocol buffers 和 gRPC 有一流的支持。这个 另一个工具能一起去友好地工作以构建时需通过 RPC 进行通信的微服务器(microservices)。有些人只时需写另一个清单(manifest)就能定义 RPC 调用占据 的状态和参数,日后从该清单将自动生成服务器和客户端代码。只是 产生代码不仅快速,一起去网络占用也非常少。

缺点 1:缺少框架

导致 5:快速的编译时间

日后 Stream 是另一个 API 提供商,服务于世界 60 0 强以及超过 2 亿的终端用户。数年来有些人日后优化了 Cassandra、PostgreSQL、Redis 等等,然而最终抵达了所使用语言的极限。

有些人实施的另一个有趣实验是用 Python 写排名 feed,日后用 Go 改写。看下面这个 排序法律依据的示例:

Go 极其地快。其性能与 Java 或 C++例如。在有些人的使用中,Go 一般比 Python 要快 60 倍。以下是 Go 与 Java 之间的基准比较:

导致 2:语言性能特别要

结论

Python vs Go

日后你是另一个新手,都看这段代码你未必会感到吃惊。它展示了多种赋值、数据底部形态、指针、格式化以及内置的 HTTP 库。

注意:当然怎样才能容易还是要取决于你的使用案例。日后帮我创建另一个基本的 CRUD API,我还是建议你使用 Django + DRF,日后 Rails。

Go 强迫你坚持打牢基础,这也就为读取任意代码带来了便利,不想 更快搞明白当架构设计 生的事情。

开发 Python 版本排序代码合适时需 3 天,包括写代码、测试和建立文档。接下来,我么花费合适 2 周的时间优化代码。其中另一个优化是把得分表达 simple_gauss(time)*popularity 转译进另一个抽象语法树。有些人也实现了 caching logic,前一天会预先计算每次的得分。

导致 6:打造团队的能力

对有些人没有大小的团队(合适 20 人)而言,生态系统特别要。日后你时需重做每块功能,那就无法为客户创造收益了。Go 有着强大的工具支持,面向 Redis、RabbitMQ、PostgreSQL、Template parsing、Task scheduling、Expression parsing 和 RocksDB 的稳定的库。

Go 的生态系统相比于 Rust、Elixir 只是 的语言有很大的优势。当然,它又略逊于 Java、Python 或 Node 只是 的语言,但它很稳定,日后日后你发现在不要 基础需求上,日后有高质量的文件包可用了。

缺点 2:错误处理

导致 3:开发者数率&未必过于创新

只是 什么的问题是有些人然时会忘记处理报错。诸如 errcheck 和 megacheck 等静态分析工具能没有处理再次出现有有哪些失误。真是有有哪些处理方案十分有效,但日后未必是没有正确的法律依据。

Go 作为一门语言致力于使事情简单化。它并未引入不要 新概念,只是 聚焦于打造一门简单的语言,它使用起来异常快速日后简单。其唯一的创新之处是 goroutines 和通道。Goroutines 是 Go 面向守护进程的轻量级法律依据,而通道是 goroutines 之间通信的优先法律依据。

有些人能没有使用 Dep 来管理依赖项,它不想 指定特定的软件包版本。除此之外,有些人还能没有使用另一个名为 VirtualGo 的开源工具,它能轻松地管理 Go 语言编写的多个项目。

Go的优势

Python 非常棒,日后其在序列化/去序列化、排序和聚合中表现欠佳。有些人突然会遇到只是 的什么的问题:Cassandra 用时 1ms 检索了数据,Python 却时需 10ms 将其转化成对象。

从相同的清单,有些人能没有未必同的语言生成客户端代码,例如 C++、Java、Python 和 Ruby。日后外部通信的 RESET 端点不想产生分歧,有些人每次也就时需编写几乎相同的客户端和服务器代码。

并发性的只是 优质底部形态是竞赛检测器,这使其很容易弄清楚异步代码中否是占据 竞态条件。下面是有些上手 Go 和通道的很好的资源:

Go 语言没有另一个主要的框架,如 Ruby 的 Rails 框架、Python 的 Django 框架或 PHP 的 Laravel。这是 Go 语言社区激烈讨论的什么的问题,日后有些人认为有些人不应该从使用框架结束了了英语 。在不要 案例状态中真是没有,但日后只是 希望构建另一个简单的 CRUD API,没有使用 Django/DJRF、Rails Laravel 或 Phoenix 将简单地多。

缺点 3:软件包管理

本文作者:佚名

Python 和 Go 代码都时需以下要求从而支持上端的排序法律依据:

Go 语言通过函数和预期的调用代码简单地返回错误(或返回调用堆栈)而帮助开发者处理编译报错。真是这个 法律依据是有效的,但很容易丢失错误占据 的范围,日后有些人也真难向用户提供有意义的错误信息。错误包(errors package)能没有允许有些人加进返回错误的上下文和堆栈追踪而处理该什么的问题。

使用 Go 语言的缺点

导致 8:GOFMT,强制代码格式

在使用案例中,有些人观察到 Go 的原始性能更好。Go 和 Elixir 都能很好占据 理数千条并行需求,然而,日后是单独的要求,Go 实际上更快。相对于 Elixir,有些人选择 Go 的只是 导致 是生态系统。在有些人需求的组件上,Go 的库更为心智心智心智心智开花结果期期 是什么图片 期。在不要 案例中,Elixir 库不适合产品使用。一起去,也真难找到/训练同样使用 Elixir 的开发者。

导致 1:性能

Go 语言的软件包管理绝对都不 完美的。默认状态下,它没有法律依据制定特定版本的依赖库,也无法创建可复写的 builds。相比之下 Python、Node 和 Ruby 都不 更好的软件包管理系统。然而通过正确的工具,Go 语言的软件包管理不想 没有表现得不错。

相比之下,开发 Go 版本的代码时需 4 天,但前一天不时需更多的优化。不要 真是最初的开发上 Python 更快,但 Go 最终时需的工作量更少。此外,Go 代码要比高度优化的 python 代码快了 40 多倍。

有些人评估的另三种 语言是 Elixir。Elixir 建立在 Erlang 虚拟机上。这是三种 迷人的语言,有些人未必想到它是日后有些人组员富含另一个在 Erlang 上非常有经验。

转用一门新语言通常是一项大决策,尤其是当你的团队成员中没有另一个使用过它时。今年 Stream 团队的主要编程语言从 Python 转向了 Go。本文解释了其肩上的九大导致 以及怎样才能做好这个 转换。

Gofmt 是三种 强大的命令行功能,内建在 Go 的编译器中来规定代码的格式。从功能上看,它例如于 Python 的 autopep8。格式一致特别要,但实际的格式标准未必突然非常重要。Gofmt 用三种 官方的形式规格代码,处理了未必要的讨论。

毋庸置疑有有哪些代码很有趣,但也使得在读取当事人的工作时,代码变得难以理解。

当前有些人使用 Go 编写的最大微服务的编译时间只需 6 秒。相较于 Java 和 C++呆滞的编译数率,Go 的快速编译时间是另一个主要的数率优势。我热爱击剑,日后当我依然记得代码应该做有哪些之时,事情日后完成就更好了。

导致 7:强大的生态系统

导致 9:gRPC 和 Protocol Buffers

Go 的并发性法律依据非常容易上手,相较于 Node 也很有趣;在 Node 中,开发者时需密切关注异步代码的处理。

Elixir vs Go

首先,最明显的有些是:Go 的开发者远没有 C++和 Java 等旧语言多。据知,有 38% 的开发者了解 Java,19.3% 的开发者了解 C++,没有 4.6% 的开发者知道 Go。GitHub 数据表明了例如的趋势:相较于 Erlang、Scala 和 Elixir,Go 更为流行,日后相较于 Java 和 C++ 就都不 了。

幸运的是 Go 非常简单,且易于学习。它只提供了基本功能而没有多余。Go 引入的新概念是「defer」声明,以及内置的富含 goroutines 和通道的并发性管理。正是日后 Go 的简单性,任何的 Python、Elixir、C++、Scala 日后 Java 开发者皆可在一月内组建成另一个高效的 Go 团队。

以上只是 有些人转向 Go 所体验到的三种 好处。当然,只是 能没有做比较:

创建 Goroutines 的成本很低,只需几千个字节的额外内存,正日后此,才使得一起去运行数百个甚至数千个 goroutines 成为日后。日后你借助通道实现 goroutines 之间的通信。Go 运行时间能没有表示所有的复杂性性。Goroutines 以及基于通道的并发性法律依据使其非常容易使用所有可用的 CPU 内核,并处理并发的 IO——所有不富含复杂性的开发。相较于 Python/Java,在另一个 goroutine 上运行另一个函数时需最小的样板代码。你只需使用关键词「go」加进函数调用:

Go 前一天的代码编译

当我第一次编程时,我很喜欢使用 Python 的高阶功能。Python 允许你创造性地使用正在编写的代码,比如,日后你:

看一下绝佳的入门教程《结束了了英语 学习 Go 语言》(http://howistart.org/posts/go/1/)中的一小段代码:

Go 是三种 非常高效的语言,高度支持并发性。一起去,它也像 C++和 Java 一样快。真是相比于 Python 和 Ruby,使用 Go 建立东西时需更多的时间,但在后续的代码优化能没有没有节省几滴 时间。在 Stream,有些人有个小型开发团队为 2 亿终端用户提供 feed 流。对新手开发者而言,Go 结合了强大的生态系统、易于上手,都不 超快的表现、高度支持并发性,宽裕成效的编程环境使它成为了三种 好的选择。Stream 仍旧使用 Python 做个性化 feed,但所有性能密集型的代码日后用 Go 来编写。