大家好,我是秀才,最近正值秋招进行时,24年的秋招似乎也是寒冬依旧,并没有以前所谓的金九银十,应届生找工作压力就不用说了,尤其是计算机专业的后端开发,更是卷出了新高度。最近看了看实验室师弟师妹们的聊天记录,Java后端真的是红海厮杀,动辄十几万甚至几十万字的八股,还要搭配各种场景题,真的是太难了。这种情况下,或许学一下Go语言是个不错的选择,多一条腿走路嘛,选择也会多一些,最主要是Go的学习成本要比Java低太多,最近也有好几个学弟学妹已经转了Go语言 其实在这之前也有不少的同学跟我聊过类似的问题,一方面是Java内容太多,越学越深,感觉有点力不从心了;另一方面是Go学完之后好不好找工作,另外就是Go语言要怎么快速学习。
今天秀才就重点给大家梳理一下Go语言的学习路线。关于Go语言的一些优势和前景可以移步《为什么是Go?》这篇文章详细了解
1. Go学习路线总览
Go语言一定是值得大家去学习的,如果是校招,这可能是个弯道超车的好机会,如果是社招,公司需要转Go技术栈,也完全没有必要抗拒,是一个扩宽自己技术栈的好机会。
秀才给大家准备了一张Go语言的学习路线图,不管是刚接触Go语言的初级开发者,或者是有一定的Go开发经验的Gopher,都可以沿着这张图里面的路径去学习
接下会给大家推荐一些Go语言板块的详细学习资料,全部免费开源,也是秀才连续肝了几个大夜精选出来的。
其实学习任何一门语言的过程都是相通的,顺序基本上就是:视频入门+教程/书籍巩固+项目练习+原理深入
2. 学习推荐
2.1 视频学习
2.1.1 最新Go语言急速入门视频教程【七米老师】
七米老师的这套视频非常适合小白快速入门,能够在最短时间内熟悉Go的环境安装和语法熟悉。学习地址如下:
| 地址链接 | |
|---|---|
| 视频地址 | www.bilibili.com/video/BV1ZJ… |
| 博客地址 | www.liwenzhou.com/posts/Go/go… |
七米视频
2.1.2 韩顺平Go语言核心编程387集完整版
看过韩顺平老师Java视频的同学肯定不会陌生,韩老师的课突出一个细致和通俗易懂,一定会把每个细小的知识点都给你讲到透彻,适合有充足的学习时间,系统学习Go语言的同学。学习地址如下:
| 地址链接 | |
|---|---|
| 视频地址 | www.bilibili.com/video/BV1Fv… |
韩顺平go
2.2 文档学习
2.2.1 官方教程 A Tour of Go**
A Tour of Go是Google开发的Go语言官方教程,它为初学者提供了一种互动的方式来探索Go语言的主要特性和编程风格。学习地址如下:
| 地址链接 | |
|---|---|
| 文档地址 | go.dev/tour/welcom… |
go_tour
2.3 必看书籍
学习任何一门语言都是如此,看视频适合入门,但想要成为高手,深入掌握一门语言,那看书必不可少。通过看书可以系统化的了解语言的一些高阶用法以及了解一些语言机制的实现原理,这对工作中一些复杂问题的解决以及面试都是必要的,秀才也为大家梳理好了必看的Go语言书单
2.3.1 Go程序设计语言
Go程序设计语言
这本书从基础语法开始,由浅入深介绍了Go语言的特性和应用,几乎涵盖了Go语言从编译到运行的各个知识点,并通过实例和示例代码讲解了Go语言的应用场景和实践,学完对Go语言会有更加整体和深刻的认识
2.3.2 Go Web编程
这本书围绕一个网络论坛作为例子,全方位的讲解了如何构建一个高性能的Web服务,介绍了HTTP协议、URL路由、MVC架构等;还介绍了使用Docker容器化以及Kubernetes容器编排来完成服务的容器话部署,是学习Web编程的必看书籍
2.3.3 Go语言高级编程
这本书从实践出发讲解了Go语言编程的进阶知识,包括内存管理和垃圾回收机制、并发编程和通信机制,反射等。还介绍了性能优化和调试技巧,是成为一个Go开发高手必看书籍
2.3.4
这本书以项目为依托,分别介绍了命令行应用、HTTP应用、RPC应用、WebSocket应用等常见的应用项目开发技巧,对项目开发、细节分析、运行时分析等核心内容进行了较为深入的剖析,提供了相对完整的项目实践经验,是提升Go开发实践经验不错的选择
除了以上推荐的这些,还有很多优质的书籍,为了便于大家学习,秀才已经为大家整理好了相应的PDF 此外,为了避免Go新手在开发过程中踩坑,秀才还特意整理了Go语言新手踩坑集合。最后,大家在学完Go开发之后,秀才也准备了一份超级详细的Go语言八股文大全
这份Go的八股大全不仅包含Go语言常用的后端知识,还包含了消息队列,数据库,redis缓存,计算机网络,微服务等全面的后端专项八股,助力大家轻松拿到Go语言的后端offer
以上这些资料都一并分享给大家,关注秀才的公众号:IT杨秀才,回复:Go学习,即可获取
2.4 web框架学习
Go语言因为其性能优势也非常适合做高并发后台的开发,所以对于Go语言web框架的学习也是必不可少的。Web开发基本的功能主要是HTTP请求的处理以及后端数据的存储,Go语言中Web的框架学习主要学习三个就够了
2.4.1 Gin框架
Gin是一个用Go语言编写的HTTP Web框架,提供了路由、中间件、JSON解析等功能,学会Gin框架就可以自己在本地搭建一个简单的HTTP服务器了。学习地址如下:
| 地址链接 | |
|---|---|
| 官方文档 | www.topgoer.com/gin%E6%A1%8… |
| 视频教程 | www.bilibili.com/video/BV1s2… |
2.4.2 GORM框架
GORM是一个Go语言开发的ORM框架,提供了一种简单的方法来处理关系型数据库操作,允许将对象模型映射到关系型数据库模型中,从而简化数据访问。学习地址如下:
| 地址链接 | |
|---|---|
| 官方文档 | gorm.io/zh_CN/docs/… |
| 视频教程 | www.bilibili.com/video/BV1U7… |
Gorm
2.4.3 Go Redis
web后端除了持久化的数据库存储外,为了提高性能,一般还需要做缓存,一般缓存都会选用Redis,Go语言中推荐go-redis来完成Redis缓存操作,go-redis是一个支持Redis Server和Redis Cluster的Golang客户端。学习地址如下:
| 地址链接 | |
|---|---|
| 官网地址 | redis.uptrace.dev/zh/ |
go-redis
2.5 微服务
做后端不能不会微服务,同样Go语在微服务上也有着丰富的支持,这里推荐几款非常优秀的微服务框架
2.5.1 Kratos
Kratos是一套轻量级Go微服务框架,包含大量微服务相关框架及工具,致力于提供完整的微服务研发体验,学习Go微服务,首推Kratos。学习地址如下:
| 地址链接 | |
|---|---|
| 官方文档 | go-kratos.dev/docs/ |
| 视频教程 | www.bilibili.com/video/BV1xq… |
Kratos
2.5.2 gRPC框架
gRPC是Google开发的开源RPC框架,提供了最简单,最基本的微服务远程调用机制,使用Protocol Buffer作为默认的消息序列化机制。学习这个框架可以最直接的了解微服务运行逻辑,可作为Go微服务入门级来学习,学习地址如下:
| 地址链接 | |
|---|---|
| 官网地址 | doc.oschina.net/grpc?t=6013… |
gGRC
2.6 项目实战
光说不练假把式,语言本身就是一种在实践中学习的知识,做实战项目无疑是学习语言的最佳实践方式。作为初学者,推荐一下几个不错的Go实战项目
2.6.1 7天用Go从零实现分布式缓存GeeCache
自己动手实现一个分布式缓存,分7天实现
| 时间 | 任务 |
|---|---|
| 第一天 | LRU 缓存淘汰策略 |
| 第二天 | 单机并发缓存 |
| 第三天 | HTTP 服务端 |
| 第四天 | 一致性哈希(Hash) |
| 第五天 | 分布式节点 |
| 第六天 | 防止缓存击穿 |
| 第七天 | 使用 Protobuf 通信 |
项目地址:geektutu.com/post/geecac…
2.6.2 go-admin
基于gin + gorm实现的后台管理框架,GitHub上星标8k+,帮助开发者用Go语言快速搭建一个数据管理平台,实现数据可视化
| 地址链接 | |
|---|---|
| 项目地址 | github.com/GoAdminGrou… |
go-admin
2.6.3 seaweedfs
seaweedfs是一个Go语言开发的一个分布式文件系统,旨在为大规模数据存储提供简单、高效、可扩展的解决方案,可用于海量的文件存储,GitHub上星标22k+
| 地址链接 | |
|---|---|
| 项目地址 | github.com/chrislusf/s… |
SeaweedFS
2.6.4 filebrowser
File Browser是一款Go语言开发的基于Web的文件浏览器,它可以方便地管理和共享文件夹内的文件内容,它支持各种类型的文件,包括文本、图像、视频、音频文件等,通过File Browser的Web界面,我们可以快速浏览、管理、上传和下载所需的文件。GitHub上星标26k+
| 地址链接 | |
|---|---|
| 项目地址 | github.com/chrislusf/s… |
filebrowser
3. Go语言的选择问题
上面说了这么多,都是Go语言的一些学习路线和优势,虽然秀才自己也是一位鹅厂的资深Gopher,但也不会一味的鼓吹Go语言,这里就主要来分析一下关于Go语言的一些选择问题
Go语言设计较晚,相对于Java来说,没有什么历史包袱,比Java更轻量级,性能也更强劲,更容易处理一些高并发的场景。国内的很多大厂,比如说字节、腾讯,百度这些都要经常应对高并发的场景,所以对Go的人才需求量比较大
Go语言语法非常简单,在学习和使用上,即使没有其他的语言基础,也很容易上手,基本没有阻力
最重要的一点是Go语言跟Java比起来,远没有Java那么卷,加上云原生,区块链等岗位的加持,岗位的薪资也非常可观,如果能趁早建立优势的话,以后发展的路子也会宽不少。 缺点就是Go目前的整个生态还没有Java那么完善,一般岗位都是中大厂,小厂以及部分中厂基本都还是Java为主,所以。所以如果自身学历等硬件条件优秀的话,进大厂本身门槛就够,可以全职走Go路线;如果自身学历条件一般,不建议把技术都压在Go上面,建议是优先掌握Java,Go语言为辅,走款自己的技术道路。
最后说一句,语言只是一门工具,作为程序员,一定要修炼自己的内功,像操作系统、计网、计组、数据结构与算法这些计算机的基础知识一定要扎实。另外就是要提升自己的学习能力与解决问题的能力,这样才不会被日新月异的技术所淘汰
交流学习
如果您觉得文章有帮助,点个关注哦。可以关注公众号:IT杨秀才,秀才后面会在公众号分享Go语言:基础 》进阶 》探秘 》实战 》面试的系列知识。也会持续更新更多硬核文章,一起聊聊互联网那些事儿!