Go 语言学习路线来啦

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 时不时的有人问我一些关于 Go 语言学习路线、学习资源方面的问题,这篇文章就来详细说一说。借此希望给那些正在学习,或是想学习 Go 语言的朋友一些帮助。

时不时的有人问我一些关于 Go 语言学习路线、学习资源方面的问题,这篇文章就来详细说一说。借此希望给那些正在学习,或是想学习 Go 语言的朋友一些帮助。


需要说明的是,按照我推荐的来学习,完全掌握 Go 相关开发知识,并且找到 Go 开发的工作应该是问题不大的,当然具体能达到什么样的程度,得看个人了。


说明一下,文中提到的所有书籍,都可以在公众号【roseduan写字的地方】后台回复相应的关键字获取:【算法、操作系统、网络、数据库、Go、微服务】,按需自取。


1. 基础知识


无论你学习什么编程语言,这些基础知识是通用的,并且它们很重要,所以我觉得还是拿出来说一说,只不过现在网上这方面的知识已经很多了,知乎、公众号搜一下,就能够找到很多相关的内容,所以我这里就简单说下。


1.1 数据结构和算法

推荐入门书籍《大话数据结构》、《啊哈!算法》、《漫画算法·小灰的算法之旅》、《算法图解》,进阶的话可以看看《算法导论》、《算法》。

H3]YYG`EP%[HALIM5]TVRUH.png

如果觉得书籍比较枯燥,网上也有一些付费专栏,可以订阅来看看。注意一点,如果不是搞算法方向的话,掌握最基础常用的内容就可以了,没必要去死磕太多高级的数据结构和算法。

巩固算法知识的话,可以上 Leetcode 刷几个题。当然,这块内容还有一个作用,那就是应付面试,大家都懂的。我的 Github 上面有一个项目,可以帮助学习学习和巩固算法,地址:

https://github.com/roseduan/algo-learn

项目使用 Go、Java、Python 实现了常用的数据结构和算法,以及相关 Leetcode 题目。


1.2 操作系统

这块的内容,简单看下就好,了解下基础的概念,在工作的前几年里,你可能不太会用得上太多操作系统上面的知识,但相信我,这是职业生涯进阶必过的坎,迟早会遇上的。

学习资源推荐:书籍《操作系统概念》、《深入理解计算机系统》、《现代操作系统》。

9YOTIU7N4@WHOL2W2@M%P31.png

书籍看不下去的,很能理解你(因为我也看不下去),这里推荐一个学堂在线的操作系统课程:

https://www.xuetangx.com/course/THU08091000267/1516699

是清华大学的公开课程,概念比较基础容易理解,想要进阶深入的话,人家也有配套的操作系统实验可以跟着做。


1.3 计算机网络

基础书籍:《图解 HTTP》、《图解 TCP_IP》、《网络是怎样连接的》。

进阶书籍:《计算机网络·自顶向下方法》、《TCP_IP 详解》。

9~J[0TO3XF@13M]E@2G[``J.png

同样,知道你看不下去书籍,在中国大学 MOOC 上面有一些名校的公开的网络课程,都是比较基础的,可以在上面找找,有挺多质量不错的。


1.4 数据库

数据库的重要性就不用说了,必备的知识。

基础的 sql 掌握起来应该没啥难度,自己多练练就行了,推荐书籍《SQL 必知必会》、《MySQL 必知必会》。

想要进阶,可以多了解下数据库一些基本设计概念,推荐书籍《数据库系统概念》,对于 mysql 进阶,例如 B+ 树存储模型、事务、索引、锁等,推荐书籍《高性能 mysql》、《MySQL 技术内幕:InnoDB 存储引擎》。

0}6_VS2BO~D}D7FYU28PEGB.png


2. Go 语言基础


终于来到正题 Go 语言了,如果你是 Go 语言零基础,或者刚入门不久,都可以顺着我的这个路径学习巩固一下。

推荐入门书籍《Go 语言学习笔记》、《Go 语言趣学指南》、《Head First Go》,跟着书籍多敲敲代码,入门没有太大的问题。

[Q~@64}{$X~XFAAMORKOQ4I.png

还有我私藏的一些在线学习 Go 语言的资料:

学完基础,知道你可能想试试手,这里推荐几个初级的项目,随意挑选自己感兴趣的一两个即可。


3. Go 语言进阶


掌握了基础的 Go 相关语法知识之后,可能需要更加深入的理解 Go 语言,对于初学者来说,可以挑选自己感兴趣的部分看看,想一下子全部吃透不太可能。

注意这块内容是比较独立的,可随时查看,不会妨碍你学习后面的内容。

这里推荐书籍《Go 程序设计语言》(号称 Go 圣经)、《Go 专家编程》、《Go 语言高级编程》。

}_A_J$9LTUAUVU~Q2O%X]GK.png

在线的学习资料:

想要进一步巩固所学知识,这里推荐几个比较进阶的项目给你:


4. Web 开发


基础知识掌握之后,可以上手做一些 web 应用,进一步了解更多的 Go 语言相关框架以及生产环境中的常用中间件。

推荐书籍《Go Web 编程》。

YP`X4XVC%N(NEG@2C4FZ$2H.png

可以学习下 web 框架 Gin、beego:两个框架都比较的流行,选择其中一个其实就可以了,推荐 Gin。官方文档都有中文,照着 demo 敲一下,了解下怎么处理 HTTP 请求的。

最好掌握一下比较流行的 ORM 框架 Gorm,有官方中文文档,照着 demo 敲一下基本上两天就能掌握了,后面遇到不会的再来查。

基本上看官方文档就可以了,不用去找其他的书籍,没有比官方文章更正宗的资料了。

推荐几个使用 Go 构建的基础 web 项目:

对于 web 项目的学习,可能有同学觉得项目太庞杂,根本不知道怎么下手。我想建议的是,可以在本地把项目跑起来,然后断点调试一个 HTTP 请求的整体流程,搞懂了一个接口,其他的大同小异。


5. 微服务


目前 Go 在微服务中的应用也比较广泛,但说实话,微服务是一个太庞大的话题,你不可能把每一个核心的问题都能够搞清楚,而且也没条件,或许只能在公司的具体的微服务生产环境中,才能够对相关的概念有更加深刻的体会。

推荐一本微服务概述的基础书籍《微服务设计》、《微服务架构设计模式》,可以帮助你理解微服务的建模、集成、测试、部署和监控的一些基础知识。

I9$7%@QB7@1L5O2WSALDLBM.png

推荐 Go 语言的微服务框架 GoKit、GoMicro、go-zero、kratos,可以随便选择一个,理解其基本的用法、设计等等。其中 go-zero 和 kratos 是国内开源的,因此都有比较详细的中文文档。

这里推荐一个在线学习的资料:

https://ewanvalentine.io/microservices-in-golang-part-1

手把手实现一个简单的 Go 微服务项目,你可以通过这个项目来学习微服务的相关知识,并且有中文版。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
18天前
|
存储 Go 索引
go语言中数组和切片
go语言中数组和切片
29 7
|
18天前
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
18天前
|
程序员 Go
go语言中结构体(Struct)
go语言中结构体(Struct)
93 71
|
17天前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
100 67
|
18天前
|
存储 Go
go语言中映射
go语言中映射
32 11
|
20天前
|
Go
go语言for遍历映射(map)
go语言for遍历映射(map)
30 12
|
19天前
|
Go 索引
go语言使用索引遍历
go语言使用索引遍历
27 9
|
19天前
|
Go 索引
go语言使用range关键字
go语言使用range关键字
25 7
|
19天前
|
Go 索引
go语言修改元素
go语言修改元素
26 6
|
10天前
|
Go 数据安全/隐私保护 UED
优化Go语言中的网络连接:设置代理超时参数
优化Go语言中的网络连接:设置代理超时参数