0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

我们在使用Go语言编程之前有什么呢?为什么选择Go语言编程?

悟空智能科技 来源:未知 作者:李倩 2018-07-10 14:19 次阅读

我们在使用 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静态类型系统

对于大规模应用来说类型系统是非常重要的。Python 是很棒的并且有趣的语言但是有些时候你会看到一些不寻常的异常因为当你尝试将变量作为一个整型变量的时候结果它是一个字符串类型.

#Djangowillcrashprocessbecauseofthisdefsome_view(request): user_id=request.POST.get('id',0)

Go 在编译的时候告诉你这是一个编译器错误,这就是在愚蠢的问题上赢得时间的地方。

3优化

令人惊讶的是,在大多数的应用场景中,Go 语言比 Python(版本2或3)更快。Benchmarking Game中可以看到对比的结果,当然这是不公平的,这依赖于应用类型和用户用例。

对于我们的案例,Go 语言由于自己的多线程模块和 CPU 可伸缩性获得了较好的性能。无论什么时候我们需要执行一些内部的请求,我们可以使用 Goroutine 来分别执行,这个比 Python 中的 Threads 在资源开销上要少上十多倍。由于这些内置的语言特性,我们可以节省大量的资源(内存和 CPU )。

4Go 不再需要 Web 框架

对于编程语言这是一件十分酷的事情。Go 语言的创造者和社区内置了很多原生的被核心语言支持的工具,在大多数情况下你都不再需要任何第三方类库。比如它有内置的 http、json、html 模板,你甚至可以不用费心去 Github 上寻找第三方类库就可以构建十分复杂的 API 服务。

当然,Go 也有很多类库和框架用来构建 web 项目,但是我会建议你不使用第三方类库来构建你的 web 项目或者 API 服务,因为在大多数情况下使用原生包会使你的生活更加轻松。

5更好的 IDE 支持和调试

IDE 支持是当你尝试更改编程语言时最重要的考虑因素之一。友好的 IDE 平均可以节省你80%的编程时间。Go Plugin For JetBrains IDEA,同样提供了其他支持,比如(Webstorm、PHPStorm 等等…)。这个插件提供了任何你在项目开发中需要的服务,强大的 JetBrains IDEA ,可以让你的开发如虎添翼。

基于我们的代码统计,在用 Go 语言重写项目后我们少写了64%的代码。

你不需要调试不存在的代码。代码越少,错误越少!

结论

Go 为我们提供了超强的灵活性,一种语言可以适用于所有的用户场景,而且在所有的用户场景都可以工作的很好。在我们的 Backend 和 API 服务中,我们得到了30%的性能优化。而且现在我可以实时处理日志,转换到数据库中,并且通过 Websocket 处理一个或多个服务!这就是 Go 语言特性所提供的的非常强大的功能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 语言编程
    +关注

    关注

    0

    文章

    23

    浏览量

    9833
  • python
    +关注

    关注

    51

    文章

    4657

    浏览量

    83379
  • go语言
    +关注

    关注

    1

    文章

    155

    浏览量

    8913

原文标题:从 Python 转到 Go 语言的五大理由

文章出处:【微信号:WUKOOAI,微信公众号:悟空智能科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    #硬声创作季 Go核心编程_Go语言发展简史

    编程语言go语言
    Mr_haohao
    发布于 :2022年09月11日 17:28:24

    #硬声创作季 Go核心编程_Go语言的注释

    编程语言go语言
    Mr_haohao
    发布于 :2022年09月11日 17:32:45

    Go语言开发有什么优势?怎么学?

    带来的各种问题。  3. 性能优异。Go的性能只比C/C++减少了10%左右。相对其他脚本(python/php),性能具有巨大的优势。  那么,Go语言都有哪些公司在用?比如goo
    发表于 12-19 16:08

    go语言能做什么工作?

    Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且
    发表于 03-22 15:03

    Go开发语言的优势在哪里?

    Go语言是谷歌发布的第二款开源编程语言,可以不损失应用程序性能的情况下降低代码的复杂性,并专门针对多处理器系统应用程序的
    发表于 03-22 15:04

    Go语言及Beego框架环境搭建相关资料推荐

    1、Go语言及Beego框架环境搭建  开始环境搭建之前我们先一起来看看:  Go有什么优势
    发表于 10-17 16:57

    网易有道CEO周枫推荐Go语言并介绍Go语言的3个优点

    网易有道CEO周枫推荐Go语言。他认为Go很好地继承了C语言灵活、简单有效的思想;Go有很高的生产效率;
    的头像 发表于 01-31 14:11 4940次阅读

    GO语言简介!GO是理想的编程语言吗?

    技术实力毋容置疑,不过这哥俩都是玩Kernel的,经历相同,理念相近,分歧会比较少,他们也都坦承C用得最多最熟,所以注定了GO的类C特性,不过这会不会导致GO设计上的思维火花不足,对OOP以及现代编程思想的支持不足,亦未可知。
    的头像 发表于 04-29 09:47 4114次阅读
    <b class='flag-5'>GO</b><b class='flag-5'>语言</b>简介!<b class='flag-5'>GO</b>是理想的<b class='flag-5'>编程</b><b class='flag-5'>语言</b>吗?

    华为云的Go语言编程的众多干货

      近日,国内较权威的Go大会——Gopher China召开,众多一线互联网公司的大神们汇聚一堂,深入探讨了Go语言并产生了诸多干货。其中,华为云微服务首席架构师田晓亮老师也受邀参与本次
    的头像 发表于 12-17 17:59 2000次阅读

    详解GO语言的趋势与使用情况

    Go 语言简单易学、性能优良。JetBrains Blog 发布了Go 语言的调查报告,看看GO 语言
    的头像 发表于 03-17 11:05 2774次阅读

    Go语言凭借什么成为云原生第一语言的?

    发展势头强劲,凭借其简洁、高效的特性,在竞争激烈的编程语言市场中占据了一席之地。 如果你对 Go 的发展趋势还不明朗的话,不妨仔细看看我后面说的。 据 StackOverflow(全球最大的
    的头像 发表于 04-22 10:15 2842次阅读
    <b class='flag-5'>Go</b><b class='flag-5'>语言</b>凭借什么成为云原生第一<b class='flag-5'>语言</b>的?

    go语言枚举类型怎么用

    go 语言枚举类型是这么用的?在什么场景下会用到枚举?本文对 go 语言枚举做了详细讲解。 枚举,是一种重要的数据类型,由一组键值对组成,通常用来在
    的头像 发表于 09-02 09:43 4852次阅读

    带你了解go语言中的闭包

      【 导读】什么是闭包? 什么场景下会用闭包 ? 本文对 go 语言中的闭包做了详细介绍。 闭包是由函数及其相关引用环境组合而成的实体(即:闭包=函数+引用环境)。 Go中的闭包 闭包是函数式
    的头像 发表于 11-02 15:27 2161次阅读

    go语言中怎么使用HTTP代理

    go语言中怎么使用HTTP代理。
    的头像 发表于 09-01 14:41 2145次阅读

    Go编程语言-你应该知道的一切

    Go 编程语言的故事始于 Google,当时三位工程师 Robert Griesemer、Rob Pike 和 Ken Thompson 对 C++ 的复杂性以及缺乏提供高效编译和执行的简单
    的头像 发表于 12-11 17:37 270次阅读