Golang学习路线
约 2284 字大约 8 分钟
Go学习路线
开发工具:Goland 或 Vscode。
一、Go 基础学习
一套基础视频+一套文档教程
二、将标准库过一遍
- 官方标准库: https://golang.org/pkg/
- 推荐 https://github.com/astaxie/gopkg 和《Go 语言标准库》The Golang Standard Library by Example ,有关于标准库的详细说明和示例,通过这两个文档库学习起来会容易一些,等全都明白了要使用的时候可以去查看上面的文档。
三、写 Go web 项目
这个时候一般都已经入门,可以试着写点东西,比如写一个博客、小系统,或者去学习一个框架,提升自己 Go Web 和 Go Api 的开发能力。
https://www.yuque.com/go/doc/68565648
初级项目案例(实现或参考实现其中之一)
- 使用 Go 生成 GitHub 上面项目的 star 趋势图 https://github.com/caarlos0/starcharts
- 使用 Go 写的吃豆人小游戏,每一步都有详细的描述和代码实现 https://github.com/danicat/pacgo
- 微信 web 版 API 的 Go 实现,模拟微信网页版的登录/联系人/消息收发等功能 https://github.com/songtianyi/wechat-go
四、Go Web 开发,学框架
基础知识掌握之后,可以上手做一些 web 应用,进一步了解更多的 Go 语言相关框架以及生产环境中的常用中间件,推荐书籍《Go Web 编程》
官方文档都有中文,照着 demo 敲一下,了解下怎么处理 HTTP 请求的
- ORM 框架 Gormhttps://gorm.io/zh_CN/docs/index.html
有官方中文文档,照着 demo 敲一下基本上两天就能掌握了,后面遇到不会的再来查
五、Web 项目推荐(实现或参考实现其中之一
- https://www.yuque.com/go/doc/68565677: 一个 Go 语言入门项目,旨在让初学者花尽可能短的时间,通过尽可能详细的步骤,历经 17 个 demo,最终一步步构建出一个生产级的 Go 后端服务器。从开发准备到 API 设计,再到 API 实现、测试和部署,每一步都详细介绍了如何去构建
- gin-vue-admin:使用 Gin 框架构建的后台管理系统,有详细的中文文档,并且配套教学视频https://github.com/flipped-aurora/gin-vue-admin
- ferry:基于 Gin + Vue + Element UI 前后端分离的工单系统。https://github.com/lanyulei/ferry
- Go-admin:Gin + Vue + Element UI 的前后端分离权限管理系统,有详细中文文档和配套视频教程 http://github.com/go-admin-team/go-admin
六、进阶项目(实现或参考实现其中之一)
- 一个 Go 语言实现的快速、稳定、内嵌的 k-v 存储引擎 rosedb https://github.com/flower-corp/rosedb
- 视频:space.bilibili.com/26194591 (作者手把手带你用 go 实现一个数据库)
- gochat http://github.com/LockGit/gochat:一个 Go 语言实现的轻量级 im 系统,对网络方面熟悉或者感兴趣的可以看看。http://github.com/LockGit/gochat
- 7DaysGolang:7days-golang:http://github.com/geektutu/7days-golang,7 天使用 Go 从零实现 web 框架、分布式缓存、ORM 框架,、RPC 框架,代码量不多,但是质量挺不错的 http://github.com/geektutu/7days-golang
- 云捷 Go:https://gitee.com/yyz116/vigo 我翻过很多优秀的开源项目,一直没找到类似于若依开发思路的快速 开发框架。而这个项目就是试图在用 go 写了一套类似若依的后台系统。这个框架可以用于所有的 web 应用程序, 如网站管理后台,网站会员中心,CMS, CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率 低。该框架以 GoFrame 为 web 服务框架,架构思路沿袭着若依的以辅助生成重复代码为主,没有过度封装,生成 的代码可以快速修改适应不同的需求,适应每个开发者自己的习惯和风格,是很好的框架参考样本。
- Filber:是一个受 Express:https://github.com/expressjs/express启发的Web 框架,构建在 Fasthttp:https://github.com/valyala/fasthttp之上,这是Go中最快的HTTP引擎。旨在简化快速开发的工作,同时考虑到零内存分配和性能。该项目借鉴 nodej's 框架的思路是很有启发性的,同时我们也能基于 Fasthttp 在项目和简历做出一些突出点。 项目地址:https://aithub.com/gofiber/fiber
- novel-fpg:https://github.com/black-currant/novel-fpg是一个小说开源项目,前端基于Flutter,后端是Python + Go 双端(各自基于 Flask、Gin 实现了-遍),包含了用户注册、登录、iwt 鉴权、签到、任务、书架、阅读器、购买章节、搜索书籍、绑定第三方账号、设置等功能。该项目业务功能比较丰富,并且基于 Gin 框架开发,业务开发能力不强的同学,可以学习-下
- 源码系列:Go 源码、Gin 框架源码、Gorm 源码、zap 源码、标准库源码(如 ioutill 包、http、log、Timer)
并发编程
进阶书籍和资料
- 纸质书:go 语言圣经、Go 专家编程、Go 语言高级编程、Go 语言设计与实现
- 在线版:Go 语言设计与实现:https://draveness.me/golang/、Go语言高级编程 官方《Effective Go》 中文版:https://chai2010.cn/advanced-go-programming-book/ 进阶 - 技巧规范篇
- Go 语法树入门——开启自制编程语言和编译器之旅! :https://github.com/chai2010/go-ast-book深入高级
- 幼麟实验室(图解 Go 和操作系统等内容,深入底层):https://space.bilibili.com/567195437
- https://www.liwenzhou.com/posts/Go/go_rabbitmq_tutorials_06/)
微服务(暂时先不学,后期根据时间再做打算)
目前 Go 在微服务中的应用也比较广泛,但说实话,微服务是一个太庞大的话题,你不可能把每一个核心的问题都能够搞清楚,而且也没条件,或许只能在公司的具体的微服务生产环境中,才能够对相关的概念有更加深刻的体会。推荐微服务概述的基础书籍《微服务设计》、《微服务架构设计模式》,可以帮助你理解微服务的建模、集成、测试、部署和监控的一些基础知识。 推荐 Go 语言的微服务框架 GoKit、GoMicro、go-zero、kratos,可以随便选择一个,理解其基本的用法、设计等等。其中 go-zero 和 kratos 是国内开源的,因此都有比较详细的中文文档。 一个在线学习的资料:https://ewanvalentine.io/microservices-in-golang-part-1/手把手实现一个简单的 Go 微服务项目,你可以通过这个项目来学习微服务的相关知识,并且有中文版。
Go 学习推荐社区/网站/博主
- 【Go 从入门到实战】Go 相关学习资料、学习笔记汇总。github.com/YSGStudyHards/GoFamily
- Go 官网 golang.google.cn/
- GoCN 社区 gocn.vip/
- 首页 - Go 语言中文网 - Golang 中文社区 studygolang.com/
- Go 夜读 talkgo.org/
- Golang / Go 语言中国知识社区 learnku.com/go
- Go 语言编程 gobea.cn/
- 前景 · Go 语言中文文档 www.topgoer.com/
- 地鼠文档 topgoer.cn/
- 【置顶】Go 语言学习之路/Go 语言教程 - 李文周的博客 www.liwenzhou.com/posts/Go/go_menu/
- 极客兔兔 geektutu.com/
- 煎鱼 eddycjy.com/
- 编程导航 - 发现优质编程资源 www.code-nav.cn/resources/golang
- 犬小哈教程 - 用心书写每一篇教程!www.quanxiaoha.com/
- Go 编程语言-常见问题 (FAQ)golang.org/doc/faq
- 全栈编程,专注编号技术。luboke.comwww.luboke.com/
- Go编程时光 - Go 编程时光 1.0.0 documentationgolang.iswbm.com/index.html
- Go 语言教程 | 菜鸟教程 www.runoob.com/go/go-tutorial.html
- Go 教程_w3cschoolwww.w3cschool.cn/go/
- Go 语言入门基础教程_Go 语言开发学习书籍-极客学院 Wikiwiki.jikexueyuan.com/list/go/