选Java还是Go?
这个问题这两年问的人越来越多,主要是因为Go确实火起来了。
我的建议
- 现在找工作:Java
- 想去字节跳动:Go
- 已经会Java,想学第二语言:Go是个不错的选择
- 刚开始学编程:Java
Go为什么火了
主要是因为云原生。
Docker、Kubernetes这些东西都是Go写的,所以做云计算、基础架构方向的公司,Go用得比较多。
字节跳动是Go的大户,内部很多服务都是Go写的。想去字节的话,会Go是加分项。
但Go的问题是
岗位没Java多。
你去招聘网站搜一下就知道了,Go的岗位数量大概是Java的十分之一到五分之一。
而且Go的岗位主要集中在一线城市的大公司。你要是在二三线城市,Go的工作机会真的很少。
生态没Java成熟。
Java有Spring全家桶,什么功能都有现成的解决方案。Go的生态还在发展中,很多东西得自己造轮子或者用不太成熟的库。
我自己的看法
我是Java开发,后来也学了Go。
说实话,Go语法确实简洁,写起来挺爽的。goroutine并发处理也很方便。
但我不会建议新人一上来就学Go。原因很简单:
- 学习资料没Java丰富
- 岗位没Java多
- 遇到问题,网上能搜到的答案没Java多
等你Java学熟了,工作了,再学Go不迟。Go语法简单,有Java基础的话,一两周就能上手。
什么情况可以直接学Go
- 你目标很明确就是要去字节:那直接学Go,面字节有优势
- 你对云原生很感兴趣:DevOps、K8s这些方向,Go是主流
- 你已经有其他语言基础:比如你会Python,想转后端,可以考虑Go
如果只是想"学编程找工作",Java还是更稳的选择。
会不会以后Go取代Java?
五年内不太可能。
Java的存量太大了,企业迁移成本太高。而且Java自己也在进步,Java 17、21都有很多新特性。
Go会越来越火,但不会取代Java。两者会长期共存,各有各的适用场景。
