你将获得什么?
- 完整的 Go 语言入门路径
- 保姆级的基础语法教学
- 4 个实战小项目带你落地 Go 语言
- Go 语言常见坑点和避坑指南
课程介绍
作为从事云原生必备的语言、腾讯、字节跳动等大厂的“高薪”宠儿,Go 在这些年真是吸引了不少开发者的目光。它简洁而高效,兼具“速度感”和“力量感”,相信你也曾在某个瞬间为它的魅力折服。
不过,很多刚开始学习 Go 语言的开发者,很难一下子找到高效的学习路径。或者说,经过一段时间学习后,对 Go 的理解也只是不上不下的“半桶水”。究其原因,无外乎这几点:
- 缺乏认真的评估,从“入门”到“放弃”,平白浪费自己的精力;
- 不会动手甚至不敢动手,学习只是“纸上谈兵”;
- 用其他语言的思维学 Go,最后“捡了芝麻,丢了西瓜”;
- 缺乏设计意识,永远停在“hello, world”的世界里。
到最后,基础没打牢,项目上不去,这怎么行?因此,我们请来了资深架构师、技术博客 tonybai.com 的博主 Tony Bai 老师。他从 2011 年就开始关注 Go 语言了,对语言的理解非常深刻。
在这个课程中,Tony Bai 老师会用“三个诀窍和五个阶段”,带给你一条系统、完整的 Go 语言入门路径。你会了解到 Go 语言一些独特的创新,快速掌握 Go 的各类语法特性。同时,这门课“语法 + 实战”的结合能让你快速上手开发 Go 程序,其中的高手洞见也能让你提前“闪避”坑点。
课程设计
课程总共分为五个阶段,分别是前置篇、入门篇、基础篇、核心篇,以及实战篇。
第一个阶段:前置篇,“心定”建立认同感。在这一部分,Tony Bai 老师会带你了解 Go 的前世今生和设计哲学。这部分会让你从设计目标、设计哲学,以及演化进程等方面,全面建立起你对 Go 语言的认同感,避免出现“Hello-and-Bye”的情况,这是学好 Go 的前提。
第二个阶段:入门篇,“手勤”多动手实践。在这一部分中,Tony Bai 老师会让你的第一个 Go 程序跑起来,看看一些实用 Go 程序都有哪些语法元素和结构。这部分会建立你“照猫画虎”的能力,让你可以随心所欲地进行实践。
第三个阶段:基础篇,“脑勤”多理解,夯实基础。这一部分,Tony Bai 老师会围绕着“程序 = 数据 + 算法”的逻辑,从变量、常量等基本概念,到数据类型,再到广义的算法,让你可以用 Go 建立对现实世界的抽象认知,也能明白 Go 程序运行的基本逻辑。
第四个阶段:核心篇,“脑勤 +”建立自己的 Go 应用设计意识。在这一部分,Tony Bai 老师会跟你介绍 Go 语言独有的,或者是有比较大创新的接口类型与 goroutine 等并发原语类型,这些语法元素是 Go 语言的核心。从这部分开始,你会树立自己的 Go 应用“设计意识”。
第五个阶段:实战篇,攻克 Go 开发的“最后一公里”。在这一部分,Tony Bai 老师会通过一个实战的例子,展示怎么做好学习与使用之间的衔接,帮助你走完“使用 Go 进行生产级开发”这“最后一公里”。
课程目录
开篇词|这样入门Go,才能少走弯路
前置篇:心定之旅
01前世今生:你不得不了解的Go的历史和现状
02拒绝“Hello and Bye”:Go语言的设计哲学是怎么一回事?
入门篇:勤加练手
03配好环境:选择一种最适合你的Go安装方法
04初窥门径:一个Go程序的结构是怎样的?
05标准先行:Go项目的布局标准是什么?
06构建模式:Go是怎么解决包依赖管理问题的?
07构建模式:GoModules的6类常规操作
08入口函数与包的初始化:搞清Go程序的执行次序
09即学即练:构建一个Web服务就是这么简单
基础篇:“脑勤”多理解
10变量声明:静态语言有别于动态语言的重要特征
11代码块与作用域如何保证变量不会被遮蔽?
12基本数据类型:Go原生支持的数值类型有哪些?
13基本数据类型:为什么Go要原生支持字符串类型?
14常量:Go在“常量”设计上的创新有哪些?
15同构复合类型:从定长数组到变长切片
16复合数据类型:原生Map类型的实现机制是怎样的?
17复合数据类型:用结构体建立对真实世界的抽象
18控制结构:if的“快乐路径”原则
19控制结构:Go的for循环,仅此一种
20控制结构:Go中的switch语句有哪些变化?
21函数:请叫我“一等公民”
22函数怎么结合多返回值进行错误处理?
23函数:怎么让函数更简洁健壮?
24方法:理解“方法”的本质
25方法:怎么选择集合与receiver类型?
26方法:怎么用类型嵌入模拟实现“继承”?
27即学即练:跟踪函数调用链,理解代码更直观
加餐|他山之石:学习Go你还可以参考什么?
核心篇:“脑勤+”洞彻核心
28接口:接口即契约
29接口:为什么nil接口不等于nil?
30接口:Go中最强大的魔法
31并发:轻量级线程goroutine是怎么回事?
32并发:小channel中蕴含大智慧
33并发:怎么使用共享变量?
34即学即练:如何实现一个轻量级线程池?
加餐|怎么拉取私有的Go Module ?
实战篇:打通“最后一公里”
35打稳根基:怎么实现一个TCP服务器?(上)
36代码操练:怎么实现一个TCP服务器?(中)
37成果检验:怎么实现一个TCP服务器?(下)
加餐|作为GoModule的作者,你应该知道的几件事
加餐|聊聊最近大热的Go泛型
期终测评周
期末测评|来赴一场Go语言的满分之约
结束语|和你一起迎接Go的黄金十年
讲师介绍
Tony Bai(白明),资深架构师、tonybai.com 博主,是 Gopher 部落技术社群发起人,现在在东软睿驰云平台及智能计算中心担任系统架构组技术负责人。
Tony Bai 老师一直在电信领域从事高并发、高性能、大容量的网关类平台服务端的开发,这两年进入了智能网联汽车行业。这些方向对编程语言的要求都比较高,所以他接触了非常多的语言:
- 曾深入研究过 C++;
- 短暂研究过 Java、Ruby、Erlang、Haskell 与 Common Lisp。
但是,都因为复杂度、耗资源、性能不够、不适用于大规模生产等种种原因,他放弃了。
2011 年,Go 语言还没发布 Go 1.0 稳定版本时,他就在跟随、实践。一直到近些年,Go 替代了 C、Python,成为了他编写生产系统的第一语言:
- 主持开发的行业短信网关系统,占据了中国移动三分之一强的市场份额;
- 使用 Go 开发的 5G 消息网关,在运营商竞标中排名技术分第一;
- 目前,正在智能网络汽车领域用 Go“重新造轮子”!
此外,Tony Bai 老师也一直在做 Go 语言的分享和布道。从 2019 年开始,Tony Bai 老师坚持不懈地将自己每天阅读到的 Go 社区的优秀技术资料,整理成公开的 Gopher 日报,提供给 Go 语言的关注者。他在 Go 技术博客 tonybai.com、GopherChina 大会上分享的实践经验和思考,深受广大 Go 语言用户的好评。