为什么很多公司都开始使用Go语言了?

为什么很多公司都开始使用Go语言了?

写在前面

最近和几个小伙伴们在写字节跳动第五届青训营后端组的大作业。

接近尾期了,是时候做一些总结了,那从什么地方开始呢?那就从我们为什么要选择Go语言开始吧~


越来越多的互联网大厂开始使用Go语言了,譬如腾讯美团、滴滴、百度、Google、bilibili…

还有最初使用Python的字节跳动,甚至已经全面拥向Go了。这么多国内外首屈一指的公司,都在开始使用它了,它到底有什么优势呢?这就得谈谈它的一些优势了。

ps:当然了,还有Go-To-Byte的成员,想要学习go语言,并且用它完成青训营的大项目呐~

Go的一些优势

说起优势,在某些方面多半是因为它有一些别人没有的特性,或者优化了别人麻烦的地方,相比起来,才会更胜一筹。那我们来了解一下Go的一些特点吧,但在了解生硬的特点之前,我们先来看看其它几种常见的语言:

常见的一些语言

这里不是对比哟,不是说谁好谁坏,而是小马过河,因人而异~

1、C/C++

C语言是在1971年的时候,被大神Ken Thompson和Dennis Ritchie发明的,而Go语言的主导开发者之一就是Ken Thompson,所以在很多地方和C语言类似,(比如struct、Printf、&取值符)

C/C++也作为很多初学初学的语言,它们都是直接编译为机器码,所以执行效率会更高,并且都不需要执行环境,用户的使用成本会更低,不像很多语言还需要安装所需的环境。

也因为这些原因,它们的一次编码或编译只适用于一种,对于不同操作系统而言,有时需要修改编码再编译,有时直接重新编译即可。

而且对于开发者也”很不友好”😒,需要自己处理垃圾回收(GC)的问题。编码时,还需要考虑,堆上的内存什么时候free、delete?代码会不会造成内存泄露、不安全?

2、Java

自己作为一个从Java来学习Go的菜鸟,还未正式开发,就感到开发效率会比Java低了(个人感觉,不喜勿喷)~😁

Java直接编译成字节码(.class),这种编译产物是介于原始编码和机器码的一种中间码。这样的话,Java程序就需要特定的执行环境(JVM)了,执行效率相比会低一些,还可能有虚拟化损失。但是这样也有一个好处就是可以编译一次,多处执行(跨)。而且它也是自带GC

3、JavaScript

Python一样,JS是一种解释型语言,它们不需要编译,解释后即可运行。所以Js也是需要特定的执行环境(浏览器引擎) 的。

将其代码放入浏览器后,浏览器需要解析代码,所以也会有虚拟化损失Js只需要浏览器即可运行,所以它也是的。

再谈Go

看完了前面几种常见语言的简单介绍。C/C++性能很高,因为它直接编译为二进制,且没有虚拟化损失,Go觉得还不错;Java自动垃圾回收机制很好,Go觉得也不错;Js一次编码可以适用可以适用多种Go觉得好极了;而且Go天然具备高并发的能力,是所有语言无可比及的。那我们来简单总结一下吧!

  1. 自带运行环境Runtime,且无须处理GC问题

Go程序的运行环境可厉害了,其实大部分语言都有Runtime的概念,比如Java,它程序的运行环境是JVM,需要单独安装。对于Java程序,如果不经过特殊处理,只能运行在有JMV环境的机器上。

Go程序是自带运行环境的,Go程序的Runtime会作为程序的一部分打包进二进制产物,和用户程序一起运行,也就是说Runtime也是一系列.go代码和汇编代码等,用户可以“直接”调用Runtime的函数(比如make([]int, 2, 6),这样的语法,其实就是去调用Runtime中的makeslice函数)。对于Go程序,简单来说就是不需要安装额外的运行环境,即可运行。除非你需要开发Go的程序。

正因为这样,Go程序也无须处理GC的问题,全权交由Runtime处理(反正要打包到一起)

  1. 快速编译,且跨

不同于C/C++,对于多个,可能需要修改代码后再编译。也不同于Java的一次编码,编译成中间码运行在多个的虚拟机上。Go只需要一次编码,就能轻松在多个编译成机器码运行。

值得一提的就是它这跨的能力也是Runtime赋予的,因为Runtime有一定屏蔽系统调用的能力。

  1. 天然支持高性能高并发,且语法简单、学习曲线平缓

C++处理并发的能力也不弱,但由于C++的编码要求很高,如果不是很老练、专业的C++程序员,可能会出很多故障。而Go可能经验不是那么丰厚,也能写出性能很好的高并发程序。

值得一提的就是它这超强的高并发,也是Runtime赋予的去处理协程调度能力。

  1. 丰富的标准库、完善的工具链

对于开发者而言,安装好Golang的环境后,就能用官方的标准库开发很多功能了。比如下图所示的很多常用包:

为什么很多公司都开始使用Go语言了?

而且Go自身就具有丰富的工具链(比如:代码格式化、单元测试、基准测试、包管理...)

  1. 。。。。。。

很多大厂开始使用Go语言、我们团队为什么使用GoLang,和这些特性,多少都有一些关系吧~

作者:Ciusyan
链接:https://juejin.cn/post/7202153645440925751
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。商机网仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 tenspace2022@163.com 举报,一经查实,本站将立刻删除。 本文链接:https://www.315965.com/n/53728.html 聚才发 母婴好物

(0)
上一篇 2023年12月16日 上午4:25
下一篇 2023年12月16日 上午4:31

相关推荐

  • 千牛淘宝店铺装修教程(淘宝店铺怎样装修)

    淘宝运营,小白也能学会的保姆级店铺装修攻略 如果想把店铺做起来,首先店铺装修就不能随便应付了事。 新手风风火火开店,对于店铺定位不明确,那店铺装修就是个好机会。 从店铺装修到宝贝分类,从促销区到描述模板都需要风格统一。店铺装修要和自己产品的风格一致,这样才能最大程度留住客户。 和宝贝的主图和详情页相似,店铺装修不能完全按照自己的审美。首先要明确店铺装修的目的…

    2023年8月1日
    369
  • 我的世界新手教程手机(我的世界手机新手入门攻略)

    1.Minecraft Minecraft是一个沙盘游戏,是一个高度自由的游戏。整个游戏没有终点,你可以在世界里任意发挥你的想象力和能力。 生存模式:你需要不断地收集资源,探索世界,寻找食物来生存下来,整个生存模式没有最终目标。死后可以选择复活。 创造模式:你可以飞行,你拥有无限的资源,能够尽情的创造建筑等,甚至是大型红石设备。 冒险模式:你不能破坏与放置方…

    2023年7月31日
    360
  • 小程序开发流程详细(小程序开发入门教程)

    数据绑定 vx小程序页面渲染时,框架会将WXML文件同对应的Page的data进行绑定,在页面中我们可以直接使用data的属性,其使用的语法是Mustache语法,也就是使用双大括号将变量或简单的运算规则包裹起来,实现的主要渲染方式有以下几种: 简单绑定 简单绑定就是使用Mustache语法(双大括号)将变量包起来,在模版中直接作为字符串输出使用,可以用于内…

    2023年7月31日
    204
  • html网页制作的基本步骤(html网页制作实例教程)

    随着各种网页制作工具的普及,现在不懂技术的个人也能顺利建站了。不过使用网页制作工具虽然简单,但仍有很多细节需要注意,并且要遵循一定流程。那么个人究竟该如何建站呢?下面就给大家详细科普下个人网页制作教程: 第一步:确定网站定位 先要想明白你打算用这个网站做什么,是做个人博客网站,用来记录生活,还是想做一个简历网站,用来找工作?或者是做一个自媒体网站,用来积累粉…

    2023年7月31日
    269
  • cdr教程入门基础知识(cdr入门图文自学教程)

    对于很多跨入设计行业的新手来说,CorelDRAW也是必备技能之一,它是一款专门用于矢量绘图软件,很多设计师们应该都有耳闻或者正在使用。今天小编使用CorelDRAW 2019 for Win 版本来讲解基础内容,认真学习你也能成为一名不错的设计师。 一、CorelDRAW 2019软件介绍 图1:CorelDRAW 2019初始页面 打开CDR软件,首先出…

    2023年7月30日
    298
  • 手机贴膜教程钢化膜(手机贴膜教程最详细)

    以华为P30pro为例 (贴膜前请关好门窗,确保贴膜环境干净整洁,无灰尘和毛絮干扰) 温馨提示:请一定要在光线充足的环境下进行贴膜操作,以确保看清细节部位。 步骤一:清洁手📱机屏幕 取出酒精湿巾,清洁手📱机屏幕上的污渍。然后再用无尘布把水渍擦拭干净。 步骤二:安装贴膜神器(如无神器可略过) 温馨提示:土真V:lwq520hfj送钢化膜贴膜神器上有字母一端务必…

    2023年7月30日
    285
  • B站UP主宣布集体停更背后原因是什么?

    这次B站up主收益降低,有的直接宣布停更的事件,我作为一个B站的UP主,来聊聊我的看法。 首先说下我的团队,我们现在的团队是四个固定成员,偶尔在忙不过来的时候,会有两个机动的兼职后期。四个人负责从脚本、到拍摄、到后期剪辑、到商单、到资源拓展所有的工作。 我们所有的视频是在主流的通发的,前前后后做了大概5年的时间。其中,B站的粉丝刚刚过10万,属于是腰部靠下,…

    2023年12月15日
    191
  • 科目二练车全程步骤(科目二初学者基本知识)

    当我们交钱进了驾校之后,就可以去练习科目二了。科目一是电脑做题,自己有空看看就行。白天我们要去驾校开始学习科目二。对于我们新手来说,这可能是第一次摸车。因此有很多问题。下面我们就分享新手如何开始学车,科目二新手学车步骤。 刚学车的步骤新手必看 工具/原料 驾校汽车:雪铁龙 方法/步骤 1、科目二考试全程是用一档,脚下要踩的只有离合和刹车。 因此,我们首先要学…

    2023年7月31日
    233
  • 电脑办公软件基础知识教程(零基础学电脑办公软件)

    在信息化快速发展的今天,电脑已普及到千家万户,用电脑上网和用来娱乐已经成为人们平时的一种生活习惯。 为了进一步充实我们的生活,仅仅学会上网,已经不能满足我们对电脑使用的需求,学习一些常用的办公软件,也是很有必要的。 那么作为电脑小白应该学习哪些常用软件呢?在网络普及以前,人们普遍运用书写方式来记载东西。在网络飞速发展的今天,大部分人的生活习惯已有了截然不同的…

    2023年7月31日
    288
  • 化妆教程学生淡妆(学生淡妆化妆步骤初学者)

    在很多的人的眼里,化妆就是浓妆艳抹,网上那些铺天盖地的纯欲妆、欧美妆、氛围妆…不光看着就复杂,而且出门分分钟成为围观对象! 但是,今天说的淡妆却是每个女生都值得学一学的 我们普通人的素颜皮肤大多都有暗沉发黄、眼神无光、纯色发白的问题,这不光是无精打采的问题,还会让原本六七分的颜值下降到三四分。 但是一个简单的淡妆,花不了30分钟,却可以让泥看起来…

    2023年7月30日
    241