“ Python 是异常强大年夜的,特别是 Python3 有了异步功能,然则 GO 将完全代替它在大年夜企业中的存在…”如不雅你真正懂得了引号中的话,你可能会去测验测验 Go 编程说话。我认为 Go 是很简单的编程说话,并且适应任何的应用情况,甚至比 Javascript 编程还要简单,这可能是 GO 编程说话能在这几年很快风行起来的原因吧。
我们在应用 Go 说话编程之前有什么呢?
网站 TreeScale.com 主页和 API 都是基于一些分析对象的收集应用。下面是我们的技巧栈:React.js 主页前端
Django Python 主页后端和认证办事
Node.js API 办事
PostgreSQL 数据库、Cassandra 日记体系
自定义容器注册表是应用 Rust 说话
大年夜膳绫擎你可以看到基本的框架是完全的基于微办事和逻辑分别的(前后端分别),甚至说是完全不合的技巧来实现的。
为什愦我们开端整合 API 办事和后端到单个项目中,重要的原因是他们有很多处所是类似的并且经由过程多种说话或者技巧编程,代码存在很多反复的。最终我们须要花费很多时光在个性化的 Django’s API 办事,特别是在定制 JSON 的响应。
一个月之后我们用 Django 建立的 API 办事,我感到当你开辟一些通俗的应用应用 Django 是异常棒的,然则当你须要更高的机能和一些个性化的模块的器械的应用 Django 是会越来越复杂的。
为什么选择 Go 说话编程?
#1 编译成单一的二进制
Golang 是编译型说话并且 Googe 的开辟者花了很大年夜的工夫在膳绫擎。它应用静态链接实际上是基于操作体系类型和情况组合所有的依附库文件和模块到一个单一的二进制文件中,这也意味着如不雅你想要编译你的后端应用到你的 Linux 操作体系和 X86 架构的 CPU 中,你只要下载编译好的二进制应用到办事器,然后可今后端应用可以工作了,这是不须要任何的依附文件的。
#2 静态类型体系# Django will crash process becauseofthis def some_view(request):
user_id = request.POST.get('id', 0)
#3 优化
令人惊奇的是,在大年夜多半的应用处景中,Go 说话比 Python(版本2或3)更快。Benchmarking Game 中可以看到比较的结不雅,当然这是不公平的,这依附于应用类型和用户用例。
对于我们的案例,Go 说话因为本身的多线程模块和 CPU 可伸缩性获得了较好的机能。无论什么时刻我们须要履行一些内部的请求,我们可以应用 Goroutine 来分别履行,这个比 Python 中的 Threads 在资本开销上要少上十多倍。因为这些内置的说话特点,我们可以节俭大年夜量的资本(内存和 CPU )。
#4 Go 不再须要 Web 框架
IDE 支撑是当你测验测验更改编程说话时最重要的┞峰酌身分之一。友爱的 IDE 平均可以节俭你80%的编程时光。 Go Plugin For JetBrains IDEA ,同样供给了其他支撑,比如 (Webstorm、PHPStorm 等等…)。这个插件供给了任何你在项目开辟中须要的办事,强大年夜的 JetBrains IDEA ,可以让你的开辟如虎添翼。
对于编程说话这是一件十分酷的工作。Go 说话的创造者和社区内置了很多原生的被核心说话支撑的对象,在大年夜多半情况下你都不再须要任何第三方类库。比如它有内置的 http、json、html 模板,你甚至可以不消操心去 Github 上寻找第三方类库就可以构建十分复杂的 API 办事。
当然,Go 也有很多类库和框架用来构建 web 项目,然则我会建议你不应用第三方类库来构建你的 web 项目或者 API 办事,因为在大年夜多半情况下应用原生包会使你的生活加倍轻松。
#5 更好的 IDE 支撑和调试
基于我们的代码统计,在用 Go 说话重写项目后我们少写了64%的代码。
你不须要调试不存在的代码。代码越少,缺点越少!
结论
对于大年夜范围应用来说类型体系是异常重要的。Python 是很棒的并且有趣的说话然则有些时刻你会看到一些不平常的异常因为当你测验测验将变量作为一个整型变量的时刻结不雅它是一个字符串类型.
Go 为我们供给了超强的灵活性,一种说话可以实用于所有的用户场景,并且在所有的用户场景都可以工作的很好。在我们的 Backend 和 API 办事中,我们获得了30%的机能优化。并且如今我可以及时处理日记,转换到数据库中,并且经由过程 Websocket 处理一个或多个办事!这就是 Go 说话特点所供给的的异常强大年夜的功能。
Go 在编译的时刻告诉你这是一个编译器缺点,这就是在愚蠢的问题上博得时光的处所。