Golang真的已经死了吗?

转自: 链接

Go语言发展现状

现在网上充斥着大量的声音,说在国内外Go已经不火了,已经“死”了,以及Go的各项缺点和不足。
那我们就来看看现在Go语言的一个具体形式吧。

实际上Go的热度总体上呈现一个上涨的趋势
在这里插入图片描述

这得益于Go自身的优势和Go与k8s的强关联。Go社区氛围其实在众多语言中并不是特别优秀和突出,但是K8s这款同样出自Google的容器编排工具广泛应用于国内外各个大厂的技术架构中,不管是国内的阿里、腾讯、字节跳动、百度,还是国外的Google、Netflix、红帽、苹果,都再广泛应用这款工具,k8s诞生于Golang,所以Go语言的生态天然的和k8s的生态有强相关性,因此,随着越来越多的公司的技术架构用到了这款容器编排工具,就有越来越多的程序员需要了解和学习Go语言。

至于Go语言的一个具体发展的前景如何?我们一起来看看具体的一些行业数据吧~
在这里插入图片描述

我们单看Go开发应届生招聘,会发现这些招聘公司基本上集中在一些知名企业,他们有着比较大的人才需求,并且普遍薪资不错。并且在面试的阶段,Go相比于市面上最多的Java开发岗来说,Go并没有十分繁重的八股文需要背诵(Go的面试题目后续会继续更新,请关注公众号哦~),面试压力相较来说更低,学习成本也不高,是现在程序员想走向开发岗位的不错选择。

Go的优点和缺点:

前面提到,Go其实存在着广受诟病的缺点,比如
  1. Go的语法还残留着一些上世纪语言的缺点,比如像语法里面的花括号是不能换行启用的等等,语法要求严格;
  2. 禁止未使用变量和多余import,在做代码测试修改demo的时候,会因为引入库没有使用而报错不能正常编译,影响代码测试的体验;
  3. Go动态类型和科学计算等方面略显不足;
  4. GC(垃圾回收)体验差…
    等等,这些都是在网上能看到的一些饱受诟病但是目前还没有被改善的一些问题,其实这和Go语言的一个初始定位有关,目标就是大道至简 — Go中没有类的说法,没有明确的面向对象的说法,不算是一种面向对象的语言,只支持封装不支持继承、多态,但是实际上结构体在一定程度上可以类比做其他语言中的class,这里可以跟随Go板块一起进行后面的语言学习。
    至于GC垃圾回收的性能也一直是褒贬不一,Go的GC算法是一种标记-清除算法,既有python使用的引用计数法回收对象快的优势,也有java使用的分代回收的性能优势,但是因为GC的时候需要扫描对象引用会有STW(stop the word),要暂停程序进行,因此会阻塞程序的进行,这一点饱受诟病。
    具体GC原理可以关注:https://github.com/ameamezhou/golangfacecontent/blob/master/part_mem/mem.md#go-gc-%E5%8E%9F%E7%90%86

这些缺点也有被Go的开发人员持续更新,原来Golang是不支持范式的,在1.18以后支持范式,Go for 循环的变量也在 1.22 进行了修复,for循环的每次迭代都会定义新的变量,而不再是共享一个变量,也开始支持对整数范围进行循环迭代等等,相信随着Go语言的持续更新会有更好的开发效果。

Go的独特优势让Go在这个语言大环境下脱颖而出:
  1. 相比于市面上常见的语言,如Java、C++和python,Go具有高效的并发支持,天生支持协程,比如像python的多线程其实依然困于GIL锁,并不是真正的并发,而Go的协程会去适配机器的核心数,更好的去做并发执行效果,效率快;
  2. Go的语法相较来说比较简洁,且没有Java那种繁重的包管理模式,并且自从引入go mod 做包管理后,在版本管理和包引入上效果更好,并且可以在包引入的时候指定对应的版本或者选择对应的文件夹,对于开发者来说更加友好,不需要用类似python的虚拟环境来做不同环境下的库版本管理,各个库可以同时存在;
  3. 与python相比,Go在性能方面更胜一筹,执行效率更快…
    等等如上优点,也让Go语言在当今市场上占据自己的一席之地。

综上所述,Golang未死,将来还是会有不错的发展的

喜欢的话请关注一下
请添加图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值