都2021年了,你还在计划转Go语言么?

简介: 在当今最流行的编程语言列表里,Go语言一直是名列前茅。近几年Go语言在互联网圈很火,国外如Google、facebook、AWS等暂且不谈,国内如阿里巴巴、腾讯、百度、抖音、小米、京东、360、网易、新浪、爱奇艺、哔哩哔哩等都已开始大规模使用Go语言开发各种应用。

在当今最流行的编程语言列表里,Go语言一直是名列前茅。近几年Go语言在互联网圈很火,国外如Google、facebook、AWS等暂且不谈,国内如阿里巴巴、腾讯、百度、抖音、小米、京东、360、网易、新浪、爱奇艺、哔哩哔哩等都已开始大规模使用Go语言开发各种应用。


微信图片_20220608210719.jpg


身边好多研发同学都在疑惑,自己是不是需要转Go呢?


Go语言的优势


  • 强悍并发性能(Go内置Goroutine协程调度机制,处理并发性相当强悍);


  • 开发速度快(这个奇特的语言代码简易度接近Python,运行速度媲美C语言);


  • 人才缺口大(供求比例1:10),导致就业薪资高(从业3年薪资25k+),方向广(移动互联网、数据服务、电子商务、金融、企业服务、游戏、O2O、社交网络、文化娱乐、教育、医疗健康、广告营销等等)。


Go语言的应用领域


  • 服务器编程(处理日志、数据打包、虚拟机处理、文件系统)


  • 网络编程(Web应用、API应用、下载应用)


  • Paas云平台领域


  • 分布式存储领域(内存数据库)


  • 区块链领域


  • 容器虚拟化等


Go的行业生态


Go 相比 PHP 的优势是类型安全,因为 Go 是一门静态类型语言,而 PHP 是门动态类型语言。这就意味着编译器在运行时做了大量的工作来确保你写的代码能够编译并且正常运行。相比于 C++ ,Go 的优势是简单。在 Go 里面,一切都是那么简单。


总结就是:Go 的特点就是与生俱来的速度快,无论是写代码还是运行时。一般来说,在不做任何特殊优化的情况下,采用 Go 语言你就能提高 5-10 倍的性能。同时 Go 也是一门简单的语言,很容易上手,很容易替换现有项目中的微服务。


另外,许多 IT 基础设施工具,如 Kubernetes、Docker 和 Vault(举几个大型的例子)都是用 Go 构建的。为了来维护这些项目和给这些项目打补丁。这可能是 Go 采用率保持增长的另外一个原因。这种技术在公共技术设施和部署中使用的越多,Go 就增长的越快。


微信图片_20220608210723.png


那你要不要考虑转Go呢?


好的,上面说了这么多的好,接下来我可能要劝退你了?


做任何事情,都需要拷问下初衷,你为什么要考虑转Go语言呢?


答案可能是:就业(更好的搬砖),或者 危机/焦虑感,就想换个语言栈


咱们一个个来分析:


1)语言重要吗?


重要!因为语言不仅是语言本身,还是一整个生态。比如 Java 开发就意味着 Java 语言 + Maven + Spring + Mybatis(国内现状),除此以外你还要大致了解 JVM 工作原理。学会每一项都不难,但是想练到驾轻就熟、顺手拈来也并不容易,至少要上半年一年的练习。


2)但是有多重要呢?


跟几十年的职业生涯相比,不值一提。无论社招校招,所有招聘方都很乐意让你边工作边熟悉语言&框架(当然前提是你的基础扎实,因此很容易融会贯通)。跟你为团队带来的贡献相比,这些不过是磨合成本罢了。随着 level 的增长,面试时甚至都不会问编程语言这种问题,因为默认大家的 coding 技能都达到了一个够用的程度。


3)假如你就想换个语言栈试试


我们常说要保持自己的核心竞争力,工作多年后,有多少时间花在了拓宽自己的知识上呢?


假如你精通PHP,Java,Go,Python,Ruby等等,那你其实并没有"拓宽",在语言上你只是学会了一大堆同质的东西,这些编程语言,虽然语法不同,适合做的事情不同,但实现的价值并没有太本质的区别。


当然,我并不是不赞许你知道更多的编程语言,而追求的应该是在工作中的核心不可替代性。


而如果是精通:JS,PHP,MySQL,Nginx,那就稍微有点进步了;再上升一步就是具体领域、行业内解决方案,就是具备真正的核心竞争力了。


最后,你要问到底要不要转呢?也不能一杆子打死,顺势而为吧~


另外,如果你有其他不同观点,欢迎留言讨论~


微信图片_20220608210726.png

相关文章
|
25天前
|
存储 监控 算法
员工上网行为监控中的Go语言算法:布隆过滤器的应用
在信息化高速发展的时代,企业上网行为监管至关重要。布隆过滤器作为一种高效、节省空间的概率性数据结构,适用于大规模URL查询与匹配,是实现精准上网行为管理的理想选择。本文探讨了布隆过滤器的原理及其优缺点,并展示了如何使用Go语言实现该算法,以提升企业网络管理效率和安全性。尽管存在误报等局限性,但合理配置下,布隆过滤器为企业提供了经济有效的解决方案。
72 8
员工上网行为监控中的Go语言算法:布隆过滤器的应用
|
1月前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
45 7
|
1月前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
1月前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
112 71
|
1月前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
115 67
|
6天前
|
算法 安全 Go
Go语言中的加密和解密是如何实现的?
Go语言通过标准库中的`crypto`包提供丰富的加密和解密功能,包括对称加密(如AES)、非对称加密(如RSA、ECDSA)及散列函数(如SHA256)。`encoding/base64`包则用于Base64编码与解码。开发者可根据需求选择合适的算法和密钥,使用这些包进行加密操作。示例代码展示了如何使用`crypto/aes`包实现对称加密。加密和解密操作涉及敏感数据处理,需格外注意安全性。
30 14
|
1月前
|
Go 索引
go语言for遍历数组或切片
go语言for遍历数组或切片
114 62
|
6天前
|
Go 数据库
Go语言中的包(package)是如何组织的?
在Go语言中,包是代码组织和管理的基本单元,用于集合相关函数、类型和变量,便于复用和维护。包通过目录结构、文件命名、初始化函数(`init`)及导出规则来管理命名空间和依赖关系。合理的包组织能提高代码的可读性、可维护性和可复用性,减少耦合度。例如,`stringutils`包提供字符串处理函数,主程序导入使用这些函数,使代码结构清晰易懂。
40 11
|
6天前
|
存储 安全 Go
Go语言中的map数据结构是如何实现的?
Go 语言中的 `map` 是基于哈希表实现的键值对数据结构,支持快速查找、插入和删除操作。其原理涉及哈希函数、桶(Bucket)、动态扩容和哈希冲突处理等关键机制,平均时间复杂度为 O(1)。为了确保线程安全,Go 提供了 `sync.Map` 类型,通过分段锁实现并发访问的安全性。示例代码展示了如何使用自定义结构体和切片模拟 `map` 功能,以及如何使用 `sync.Map` 进行线程安全的操作。
|
10天前
|
监控 安全 算法
深度剖析核心科技:Go 语言赋能局域网管理监控软件进阶之旅
在局域网管理监控中,跳表作为一种高效的数据结构,能显著提升流量索引和查询效率。基于Go语言的跳表实现,通过随机化索引层生成、插入和搜索功能,在高并发场景下展现卓越性能。跳表将查询时间复杂度优化至O(log n),助力实时监控异常流量,保障网络安全与稳定。示例代码展示了其在实际应用中的精妙之处。
36 9