乐趣区

关于golang:Go-语言学习路线来啦

时不时的有人问我一些对于 Go 语言学习路线、学习资源方面的问题,这篇文章就来具体说一说。借此心愿给那些正在学习,或是想学习 Go 语言的敌人一些帮忙。

须要阐明的是,依照我举荐的来学习,齐全把握 Go 相干开发常识,并且找到 Go 开发的工作应该是问题不大的,当然具体能达到什么样的水平,得看集体了。

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

1. 基础知识

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

1.1 数据结构和算法

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

如果感觉书籍比拟干燥,网上也有一些付费专栏,能够订阅来看看。留神一点,如果不是搞算法方向的话,把握最根底罕用的内容就能够了,没必要去死磕太多高级的数据结构和算法。

坚固算法常识的话,能够上 Leetcode 刷几个题。当然,这块内容还有一个作用,那就是应酬面试,大家都懂的。我的 Github 下面有一个我的项目,能够帮忙学习学习和坚固算法,地址:

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

我的项目应用 Go、Java、Python 实现了罕用的数据结构和算法,以及相干 Leetcode 题目。

1.2 操作系统

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

学习资源举荐:书籍《操作系统概念》、《深刻了解计算机系统》、《古代操作系统》。

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

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

是清华大学的公开课程,概念比拟根底容易了解,想要进阶深刻的话,人家也有配套的操作系统试验能够跟着做。

1.3 计算机网络

根底书籍:《图解 HTTP》、《图解 TCP_IP》、《网络是怎么连贯的》。

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

同样,晓得你看不下去书籍,在中国大学 MOOC 下面有一些名校的公开的网络课程,都是比拟根底的,能够在下面找找,有挺多品质不错的。

1.4 数据库

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

根底的 sql 把握起来应该没啥难度,本人多练练就行了,举荐书籍《SQL 必知必会》、《MySQL 必知必会》。

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

2. Go 语言根底

终于来到正题 Go 语言了,如果你是 Go 语言零根底,或者刚入门不久,都能够顺着我的这个门路学习坚固一下。

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

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

  • Go By Example 中文版:https://gobyexample-cn.github… Go 语言。
  • Go 面试题:http://www.topgoer.cn/docs/go… Go,用来筹备面试也是很好的。
  • 无闻大佬的在线入门指南:https://github.com/unknwon/th…
  • 跟着单元测试学习 Go:https://github.com/quii/learn…

学完根底,晓得你可能想试试手,这里举荐几个高级的我的项目,随便筛选本人感兴趣的一两个即可。

  • starcharts:https://github.com/caarlos0/starcharts,我的项目的性能是生成 Github 下面的我的项目的 star 趋势图,外围代码不多,用来练手很适合。
  • gorched:https://github.com/zladovan/gorched,应用 Go 写得一个小游戏。
  • pacgo:https://github.com/danicat/pacgo,也是应用 Go 写得一个小游戏,每一步都有具体的形容和代码实现。
  • wechat-go:https://github.com/songtianyi/wechat-go,微信 web 版 API 的 Go 实现,模仿微信网页版的登录/联系人/音讯收发等性能。

3. Go 语言进阶

把握了根底的 Go 相干语法常识之后,可能须要更加深刻的了解 Go 语言,对于初学者来说,能够筛选本人感兴趣的局部看看,想一下子全部吃透不太可能。

留神这块内容是比拟独立的,可随时查看,不会障碍你学习前面的内容。

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

在线的学习材料:

  • 《Go 语言设计与实现》:https://draveness.me/golang。
  • 《Go 语言高级编程》:https://chai2010.cn/advanced-go-programming-book。

想要进一步坚固所学常识,这里举荐几个比拟进阶的我的项目给你:

  • rosedb:https://github.com/roseduan/rosedb,不要脸的举荐一下本人的我的项目,一个用 Go 实现的繁难高效的 k-v 存储引擎。
  • gochat:https://github.com/LockGit/gochat,一个 Go 语言实现的轻量级 im 零碎,对网络方面相熟或者感兴趣的能够看看。
  • 7DaysGolang:https://github.com/geektutu/7days-golang,7 天应用 Go 从零实现 web 框架、分布式缓存、ORM 框架,、RPC 框架,代码量不多,然而品质挺不错的。

5. Web 开发

基础知识把握之后,能够上手做一些 web 利用,进一步理解更多的 Go 语言相干框架以及生产环境中的罕用中间件。

举荐书籍《Go Web 编程》。

能够学习下 web 框架 Gin、beego:两个框架都比拟的风行,抉择其中一个其实就能够了,举荐 Gin。官网文档都有中文,照着 demo 敲一下,理解下怎么解决 HTTP 申请的。

最好把握一下比拟风行的 ORM 框架 Gorm,有官网中文文档,照着 demo 敲一下基本上两天就能把握了,前面遇到不会的再来查。

基本上看官网文档就能够了,不必去找其余的书籍,没有比官网文章更正宗的材料了。

举荐几个应用 Go 构建的根底 web 我的项目:

  • gin-vue-admin:https://github.com/flipped-aurora/gin-vue-admin,应用 Gin 框架构建的后盾管理系统。
  • ferry:https://github.com/lanyulei/ferry,基于 Gin + Vue + Element UI 前后端拆散的工单零碎。
  • go-admin:https://github.com/go-admin-team/go-admin,Gin + Vue + Element UI 的前后端拆散权限管理系统。

对于 web 我的项目的学习,可能有同学感觉我的项目太庞杂,基本不晓得怎么下手。我想倡议的是,能够在本地把我的项目跑起来,而后断点调试一个 HTTP 申请的整体流程,搞懂了一个接口,其余的大同小异。

6. 微服务

目前 Go 在微服务中的利用也比拟宽泛,但说实话,微服务是一个太宏大的话题,你不可能把每一个外围的问题都可能搞清楚,而且也没条件,或者只能在公司的具体的微服务生产环境中,才可能对相干的概念有更加粗浅的领会。

举荐一本微服务概述的根底书籍《微服务设计》、《微服务架构设计模式》,能够帮忙你了解微服务的建模、集成、测试、部署和监控的一些基础知识。

举荐 Go 语言的微服务框架 GoKit、GoMicro、go-zero、kratos,能够轻易抉择一个,了解其根本的用法、设计等等。其中 go-zero 和 kratos 是国内开源的,因而都有比拟具体的中文文档。

这里举荐一个在线学习的材料:

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

手把手实现一个简略的 Go 微服务项目,你能够通过这个我的项目来学习微服务的相干常识,并且有中文版。


最初,再揭示一下,文中提到的所有书籍,都能够在公众号【roseduan 写字的中央 】后盾回复相应的关键字获取:【算法、操作系统、网络、数据库、Go、微服务】,按需自取。

退出移动版