Tony Bai · Go语言第一课

Tony Bai · Go语言第一课 / 大师带路,快速上手Go语言

Tony Bai
资深架构师,tonybai.com博主
  • 课程目录
  • 课程介绍
  • 在线阅读:开篇词|这样入门Go,才能少走弯路

    避免弯路,一起来看看Go入门的正确方法吧!

  • 01|前世今生:你不得不了解的Go的历史和现状

    你了解Go语言的发展历史和现状吗?

  • 02|拒绝“Hello and Bye”:Go语言的设计哲学是怎么一回事?

    在学习Go语言之前,一定要先看看你认不认同Go语言的设计哲学。

  • 03|配好环境:选择一种最适合你的Go安装方法

    选择一种最适合你的Go安装方法,开始你的Go编程之旅吧!

  • 04|初窥门径:一个Go程序的结构是怎样的?

    一个Go程序的结构是怎样的?

  • 05|标准先行:Go项目的布局标准是什么?

    Go官方没定义?我来告诉你Go项目的布局标准!

  • 06|构建模式:Go是怎么解决包依赖管理问题的?

    是时候拥抱Go Moudule了!

  • 07|构建模式:Go Module的6类常规操作

    日常开发中,对Go Module的维护有哪些操作呢?

  • 08|入口函数与包初始化:搞清Go程序的执行次序

    今天我们搞清Go包的执行次序!

  • 09|即学即练:构建一个Web服务就是这么简单

    用Go语言构建一个Web服务就是这么简单!

  • 10|变量声明:静态语言有别于动态语言的重要特征

    今天我们来学习变量声明!

  • 11|代码块与作用域:如何保证变量不会被遮蔽?

    Go语言中怎么保证变量不会遮蔽呢?

  • 12|基本数据类型:Go原生支持的数值类型有哪些?

    今天我们来聊聊Go原生支持的数值类型!

  • 13|基本数据类型:为什么Go要原生支持字符串类型?

    Go中的字符串类型是怎么样的?

  • 14|常量:Go在“常量”设计上的创新有哪些?

    Go中的常量,支持无类型常量、隐式自动转型,以及实现枚举。

  • 15|同构复合类型:从定长数组到变长切片

    看看Go中最常见的两种同构复合类型,数组和切片。

  • 16|复合数据类型:原生map类型的实现机制是怎样的?

    一文告诉你Go原生的map类型是怎样的。

  • 17|复合数据类型:用结构体建立对真实世界的抽象

    Go中的结构体类型是怎么样的呢?

  • 18|控制结构:if的“快乐路径”原则

    Go中,if的“快乐路径”原则说的是什么?

  • 19|控制结构:Go的for循环,仅此一种

    Go是怎么支持for循环的呢?

  • 20|控制结构:Go中的switch语句有哪些变化?

    今天,我会讲解Go语言提供的另一种分支控制结构:switch语句。和if分支语句相比,在一些执行分支较多的场景下,使用switch分支控制语句可以让代码更简洁、可读性更好。

  • 21|函数:请叫我“一等公民”

    身为“一等公民”的Go函数,又有哪些不同的特性呢?

  • 22|函数:怎么结合多返回值进行错误处理?

    今天这节课,我们将会从Go语言的错误处理机制入手,围绕Go语言错误处理机制的原理、Go错误处理的常见策略,来学习一下如何结合函数的多返回值机制进行错误处理的设计。

  • 期中测试|一起检验下你的学习成果吧

    一起检验下你的学习成果吧!

  • 23|函数:怎么让函数更简洁健壮?

    良好的函数设计不仅仅要包含错误设计,函数的健壮性与简洁优雅也是我们在函数设计过程中要考虑的问题。

  • 24|方法:理解“方法”的本质

    Go语言中的方法的本质就是,一个以方法的receiver参数作为第一个参数的普通函数。

  • 25|方法:方法集合与如何选择receiver类型?

    这一讲中,我们来学习一下不同receiver参数类型对Go方法的影响,以及我们选择receiver参数类型时的一些经验原则。

  • 26|方法:如何用类型嵌入模拟实现“继承”?

    这一节课,我们就来学习一下“类型嵌入”这种语法。看看通过这种语法,我们如何实现对嵌入类型的方法的“继承”,同时也搞清楚这种方式对新定义的类型的方法集合的影响。

  • 27|即学即练:跟踪函数调用链,理解代码更直观

    学了那么多理论,来个小项目练练手吧!

  • 用户故事|罗杰:我的Go语言学习之路

    今天,我们邀请了一位用户和你分享一下他学习Go的一些经历,如果你还是一个Go新人,希望他的这些经历,能给你带来一些启发和帮助。

  • 28|接口:接口即契约

    在接下的三讲中,我们将系统学习Go语言的接口类型,围绕接口类型的基础知识与接口定义的惯例、接口类型的内部表示以及接口的应用模式这三方面内容进行讲解。在这一讲中,我们先来学习一下接口类型的基础知识部分

  • 29|接口:为什么nil接口不等于nil?

    为什么Go语言核心团队的技术负责人Russ Cox会说,“如果要从Go语言中挑选出一个特性放入其他语言,我会选择接口”呢?

  • 30|接口:Go中最强大的魔法

    在真实的生产项目中,接口都能给应用设计带来好处。那么如果要用接口,我们应该怎么用呢?怎么借助接口来改善程序的设计,让系统实现我们常说的高内聚和低耦合呢?

  • 元旦快乐|这是一份暂时停更的声明

    祝你度过一个愉快的元旦假期,我们2022年1月7日再见。

  • 31|并发:Go的并发方案实现方案是怎样的?

    什么是并发呢?Go并发的方案又是怎样的呢?

  • 32|并发:聊聊Goroutine调度器的原理

    就我个人的学习和实践经验来说,了解Goroutine的调度模型和原理,能够帮助我们编写出更高质量的Go代码。

  • 33|并发:小channel中蕴含大智慧

    channel就好比Go并发设计这门“武功”的秘籍口诀,可以说,学会在Go并发设计时灵活运用channel,才能说真正掌握了Go并发设计的真谛。

  • 34|并发:如何使用共享变量?

    在这并发的最后一讲,我们就围绕sync包中的几个同步结构与对应的方法,聊聊基于共享内存的并发模型在Go中的应用

  • 35|即学即练:如何实现一个轻量级线程池?

    继续挑战核心篇的即学即练吧!

  • 36|打稳根基:怎么实现一个TCP服务器?(上)

    通过实战项目,走完Go学习的“最后一公里”。

  • 37|代码操练:怎么实现一个TCP服务器?(中)

    今天,我们的目标是实现一个基于TCP的自定义应用层协议的通信服务端。

  • 38|成果优化:怎么实现一个TCP服务器?(下)

    在实战篇的最后一讲,我们就结合上一讲实现的自定义应用层协议的通信服务端,看看优化Go程序使用的常用工具与套路。

  • 结课测试|快来检验下你的学习成果吧!

    快来检验下你的学习成果吧!

  • 加餐|我“私藏”的那些优质且权威的Go语言学习资料

    留言区一直有同学问我,除了这门课之外,我还有什么推荐的Go语言学习资料。所以今天我们就来聊聊这个话题。

  • 加餐|聊聊Go 1.17版本的那些新特性

    今天这讲,我们就来聊聊Go 1.17版本中的新特性,目的是让那些没用过Go 1.17版本,或者用过Go 1.17版本但还不知道它新特性变化的Go开发者,对Go 1.17有一个全面的了解。

  • 加餐|如何拉取私有的Go Module?

    今天来回答Gopher常见的关于Go Module的两个疑问。

  • 加餐|作为Go Module的作者,你应该知道的几件事

    从Go Module发布者或者维护者的角度,看看我们在规划、发布和维护Go Module时需要考虑和注意什么事情。

  • 加餐|聊聊最近大热的Go泛型

    我们今天将围绕Go为什么加入泛型、泛型设计方案的演化历史、Go泛型的主要语法以及Go泛型的使用建议几个方面,聊聊Go泛型的那些事儿。

  • 加餐|聊聊Go语言的指针

    众所期待的指针加餐来了!

  • 大咖助阵|孔令飞:从小白到“老鸟”,我的Go语言进阶之路

    今天这篇大咖助阵,我们请来了孔令飞老师,聊聊他的Go语言进阶之路。

  • 大咖助阵|叶剑峰:Go语言中常用的那些代码优化点

    今天,我想和你分享一下我个人在开发过程中看到和使用到的一些常用的代码优化点,希望能给你日常编码带来一些帮助。

  • 大咖助阵|徐祥曦:从销售到分布式存储工程师,我与 Go 的故事

    今天我想和你分享一下我职业启蒙阶段的点点滴滴,看看我从一名小销售到分布式存储工程师都发生了哪些故事。这些小故事不一定会给你带来直接启发,但我敢拍胸脯保证它们都很好玩。

  • 大咖助阵|曹春晖:聊聊 Go 语言的 GC 实现

    武林秘籍救不了段错误,GC拯救程序员。

  • 大咖助阵|大明:Go泛型,泛了,但没有完全泛

    我们今天就来讨论一下 Go 泛型的限制,以及这些限制会如何影响我们解决问题。

  • 大咖助阵|海纳:聊聊语言中的类型系统与泛型

    通过这节课的学习,你会得到一种新的学习语言的视角,那就是从类型的角度去进行分析。

  • 结束语|和你一起迎接Go的黄金十年

    在Go即将迎来黄金十年的历史时刻,希望你能在Go语言之路上走的更远,并实现你的个人价值。

你将获得

  • 完整的Go语言入门路径
  • 保姆级的基础语法教学
  • 4个实战小项目带你落地Go语言
  • Go语言常见坑点和避坑指南

讲师介绍

  • 曾深入研究过 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语言用户的好评。


课程介绍

作为从事云原生必备的语言、腾讯、字节跳动等大厂的“高薪”宠儿,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语言的人群,或者从其他语言(如Java、PHP等)转来的开发者。


特别放送

免费领取福利



限时活动推荐


订阅须知

教程推荐

jQuery在线教程

MySQL在线教程

Python数据结构在线教程

JUnit在线教程

SQLite在线教程

Node.js在线教程

随机推荐

象印电热水瓶家用电水壶良心点评配置区别,哪款性价比更好

海尔3匹新一级评测哪款质量更好,质量不好吗

追风者PHANTEKSP500A真实测评质量优劣!评测好不好用

技嘉B450MDS3H功能真的不好吗,测评结果让你出乎意料!

摩飞电器挂烫机评测比较哪款好,评测哪款功能更好

金恩贝施乳钙儿童宝宝补钙滴剂搭婴幼儿婴儿菌种到底要怎么选择,...