【Golang】Go 语言今年 12 岁,何去何从,现状到底如何?

码农印象 等级 739 1 0

不说不知道,一说下一跳。Go 语言已经开源 11 周年了,感觉是一路高歌, Release History (polarisxu 整理)如下:

2011 年 3 月 16 日,Go 语言的第一个稳定版本 r56 发布; 2012 年 3 月 28 日,Go 语言的第一个正式版本 Go1 发布,并承诺 1.x 的 兼容性; 2013 年 5 月 13 日,Go1.1 正式版才发布。 2013 年 12 月 1 日,Go1.2 正式发布; 2014 年 6 月 18 日,Go1.3 正式发布; 2014 年 12 月 10 日,Go1.4 正式发布; 2015 年 8 月 19 日,Go1.5 正式发布。该版本实现了自举,即移除了 C 代码,使用 Go 开发 Go 语言; 2016 年 2 月 17 日,Go1.6 正式发布; 2016 年 8 月 15 日,Go1.7 正式发布;引入 context 包; 2017 年 2 月 17 日,Go1.8 正式发布; 2017 年 8 月 24 日,Go1.9 正式发布;引入别名; 2018 年 2 月 16 日,Go1.10 正式发布; 2018 年 8 月 25 日,Go1.11 正式发布。开始强势支持 Go modules; 2019 年 3 月 1 日,Go1.12 正式发布; 2019 年 9 月 3 日,Go1.13 正式发布; 2020 年 2 月 25 日,Go1.14 正式发布;goroutine 支持异步抢占调度; 2020 年 8 月 11 日,Go1.15 正式发布; 2021 年 2 月,预计 Go1.16 正式发布;将包含新的文件系统接口和支持在构建时的静态文件嵌入,链接器的重写,Go modules 默认开启且正式对 Apple Silicon(GOARCH=arm64)Mac 进行支持。

目视现在

现在的 Go 语言在国内已经掀起了一浪又一浪的热潮,炒的非常火热。各大平台极客时间、拉勾教育、掘金小册、慕课网等纷纷出现了大量 Go 语言相关的付费专栏/视频。

在现实工作层面,字节跳动、腾讯向 Go 语言侧偏,以及其它各大一二线厂均出现了不少 Go 的岗位,也正预示着当前已经到了一个比较好风口。

在开源项目层面,Kubernetes、Etcd、Prometheus、Docker 等大量的云原生相关组件均以 Go 语言开发,懂一门 Go 语言,排查问题也更方便了。

与企业开发层面,出现了大量其他语言的开发者向 Go 语言转型,在企业的软件开发中出现,新项目用 Go 语言,老项目保留,形成同时维护新老系统,再渐迁的绞杀者模式:

【Golang】Go 语言今年 12 岁,何去何从,现状到底如何?

在面试中比较常见的是 PHP、C++ 语言,就会在企业中形成了 Go+PHP(新+老系统)的局面,又或是 Go 调 CGO 的运行模式。这也得益于 Go 语言的易用性和一定的胶水特性。

在培训机构层面,各大机构都多少曾经向 Go 语言发起过进攻,但目前 Go 语言大多以中高级人才为主,也就是有过其他语言经验的软件开发从业者为主。因此培训机构的市场行情相对较差。

在社会招聘和岗位层面,狭义上来看,与 2018 年我写的 《带你了解一下Golang的市场行情》基本情况仍保持一致:

【Golang】Go 语言今年 12 岁,何去何从,现状到底如何? 以下为 GoCN 所收集的 “2020 中国Go 开发者调查报告” 的地域分布:

【Golang】Go 语言今年 12 岁,何去何从,现状到底如何? Go 语言的大热门地区依然是:北京、上海、深圳,主体集中在一线城市,机会这里最多。

看看数据:TIOBE

从 TIOBE 的编程语言排行榜来看,整体上 Go 语言的热门程度并不会特别高(与老牌语言相比),但作为一门编程语言在短短 11 年内已有很不错的表现:

【Golang】Go 语言今年 12 岁,何去何从,现状到底如何? 同时业内时常说 Go 语言要干掉 PHP、C++、Java 等,目前来看短期内不现实,官方也没有这方面打算,因为合适的场景选择合适的语言就好了。

TIOBE 提示本月的排名在第 13 名,且最高排名出现在 2020 年 5 月,在第 10 名,近期基本稳定在这个位数附近,至少近年是干不掉老大哥们的。

展望未来

Go1 目前一如既往的遵守了 Go1 兼容性承诺,这给不少正在使用 Go 语言的企业带来了一注强心针。但给 Go 语言也带来了一些 “麻烦”。那就是存在破坏性变更的变动无法在 Go1 中实现。

因此为了解决一些 ”问题“,也想达到更好的特性目标。2018 年时释出了 Go2 的计划,详细可参见Go 2, here we come!,其中包含了大量的功能特性。

从目前的基本论调和实际情况来看,可兼容实现的,都会在 Go1 实现,例如大家最期待的功能之一 ”泛型“,预计最早会在 Go1.17 会释出,样例:

// Print prints the elements of any slice.
// Print has a type parameter T and has a single (non-type)
// parameter s which is a slice of that type parameter.
func Print[T any](s []T) {
 // same as above
}

其在 6 月下旬发布了最新的设计草稿,若对泛型有更进一步需求可关注 design/go2draft-type-parameters,而一些不兼容的修改,若确切评估后无法直接实现的,将会到 Go2 的 计划中去:

【Golang】Go 语言今年 12 岁,何去何从,现状到底如何? 相信 Go2 发布时,肯定也不是 go run xxx 了,估计会变更命令集,以示区分。

总结

12 岁,Go 语言目前在国内已经火起来了,最近接触的一个运营大佬称 Go 语言为 “准备霸占未来语言半壁江山” 的语言。还在观望的读者可以考虑下手,吃一波红利。

但现阶段的 ”成功“ 并不代表后续一定持续强劲,背后离不开所有开发者在社区开源的努力。

我们一起思考两个问题:

你为什么喜欢 Go 语言?他有什么短板?

如果 Go 语言想继续占领更多的市场,需要在什么领域发力?

你的答案是什么?在评论区告诉大家吧!

收藏
评论区

相关推荐

Golang高并发抓取HTML图片
版权所有,转载请注明:http://www.lenggirl.com/language/gopicture.html(https://links.jianshu.com/go?tohttp%3A%2F%2Fwww.lenggirl.com%2Flanguage%2Fgopicture.html) 使用准备 1.安装Golang 2.
golang 中神奇的 slice
声明:本文仅限于简书发布,其他第三方网站均为盗版,原文地址: golang 中神奇的 slice(https://links.jianshu.com/go?tohttps%3A%2F%2Fliqiang.io%2Fpost%2Fimagesliceingolang) 在 golang 中,似乎人们都不太喜欢使用 Linked List,甚至于原
godoc 命令和 golang 代码文档管理
介绍 godoc 是 golang 自带的文档查看器,更多的提供部署服务 go doc 和 godoc 在 golang 1.13 被移除了,可以自行安装 golang.org go1.13 godoc(https://links.jianshu.com/go?tohttps%3A%2F%2Fgolang.org%2Fdoc%2Fg
为什么GOPROXY对Golang开发如此重要
为什么GOPROXY对Golang开发如此重要 引言 从Go 1.13开始,Go Module作为Golang中的标准包管理器,在安装时自动启用,并附带一个默认的GOPROXY。 但是对于其他的GOPROXY选项,比如JFrog GoCenter,以及你自己的Go Module包,你需要在公众视野中保持安全,你应该选择什么样的配置? 你怎样才能
【Golang】GoWeb框架之Gin-简明教程
Gin 简介 Gin is a HTTP web framework written in Go (Golang). It features a
golang 分析调试高阶技巧
layout: post title: “golang 调试高阶技巧” date: 2020603 1:44:09 0800 categories: golang GC 垃圾回收 golang 高阶调试 Golang tools nm compile
深入理解 Go Slice
(https://imghelloworld.osscnbeijing.aliyuncs.com/0ce8a8773a658d4b843e5796a0dbf001.png) image 原文地址:深入理解 Go Slice(https://github.com/EDDYCJY/blog/blob/master/golang/pkg/20
Go 语言编程 — go mod 依赖包管理
目录 == ### 文章目录 * 目录 * go mod 依赖包管理 * 使用 go mod go mod 依赖包管理 ============ go mod 是 Golang 1.11 版本引入的依赖包管理工具。其中,Golang 对 Modules 的定义:Modules 是相关 Go Packages 的集合,是源代码交换和版本控制
Go语言入门系列(一)之Go的安装和使用
1.安装环境 ====== 1. 进入[Golang官网](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgolang.org),进入下载页面。 (如果打不开可访问[Golang中国](https://www.oschina.net/action/GoToLink?u
Go语言基础之并发
转载自[https://www.liwenzhou.com/posts/Go/14\_concurrence/](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.liwenzhou.com%2Fposts%2FGo%2F14_concurrence%2F) Go语言基础之并发 ==
Archlinux下Visual Studio Code配置Golang开发环境
一、Golang的安装 ----------- GoLang安装并验证一下: [cox@localhost ~]$ sudo pacman -S go [cox@localhost ~]$ go version go version go1.8.3 linux/amd64s 要注意,Golang的安装要确保两个环境变量,一个是G
Golang 开发环境搭建
Golang 是 Google 发布的开发语言,Go 编译的程序速度可以媲美 C/C++。 安装 -- sudo apt-get install golang sudo apt-get install golang-go.tools 使用 -- * 编译运行程序 go run main.go * 查看命令文
Golang依赖管理工具:glide从入门到精通使用
介绍 -- 不论是开发Java还是你正在学习的Golang,都会遇到**依赖管理**问题。Java有牛逼轰轰的Maven和Gradle。 Golang亦有godep、govendor、glide、gvt、gopack等等,本文主要给大家介绍[gilde](https://www.oschina.net/action/GoToLink?url=https%3
Golang学习系列第一天:安装golang
0.  ssh连接linux(我用的centos7),略 ============================ 1.  golang下载 ============ 由于Golang官网[https://golang.org/](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgola
Sentinel
![9.28头图.png](https://ucc.alicdn.com/pic/developer-ecology/af7ab6c27c3c4c3aa5dc2cce3c9e8ab9.png) > \*\*导读:\*\*2020年,Sentinel 推出 Go 原生版本[Sentinel-Golang](https://www.oschina.net/ac