《Go语言核心36讲》 是郝林老师发布的一则专栏教程(付费),以音频+文稿的方式系统的讲述了 Go 的知识。

我自己使用 Go 已经有两年时间了(从毕业到现在),在这个过程中阅读过一些书籍、博客、文档等,遇到问题也是随手查下资料解决掉了,现在回顾一下感觉有很多知识漏洞还没有补上或对某些知识点还是似懂非懂的样子,所以就借此机会跟随这个专栏巩固一下 Go 的知识吧! 以下内容为我自己学习过程中整理的学习笔记。So, Let’s Go!

专栏内容

专栏的主要模块,一共分成 3 大模块,5 个章节:

模块一:Go 语言基础知识

  • 基础概念:我会讲述 Go 语言基础中的基础,包括一些基本概念和运作机制。它们都应该是你初识 Go 语言时必须知道的,同时也有助于你理解后面的知识。

模块二:Go 语言进阶技术

  • 数据类型和语句:Go 语言中的数据类型大都是很有特色的,你只有理解了它们才能真正玩转 Go 语言。我将和你一起与探索它们的奥妙。另外,我也会一一揭示怎样使用各种语法和语句操纵它们。

模块三:Go 语言实战与应用

  • Go 程序的测试:很多程序员总以为测试是另一个团队的事情,其实不然。单元测试甚至接口测试其实都应该是程序员去做的,并且应该受到重视。在 Go 语言中怎样做好测试这件事?我会跟你说清楚、讲明白。

  • 标准库的用法:虽然 Go 语言提供了自己的高效并发编程方式,但是同步方法依然不容忽视。这些方法集中在 sync 代码包及其子包中。这部分还涉及了字节和字符问题、OS 操控方法和 Web 服务写法等,这些都是我们在日常工作中很可能会用到的。

  • Go 语言拾遗:这部分将会讲述一些我们使用 Go 语言做软件项目的过程中很可能会遇到的问题,至少会包含两篇文章,是附赠给广大 Go 语言爱好者的。虽然我已经有一个计划了,但是具体会讲哪些内容我还是选择暂时保密。请你和我一起小期待一下吧。

学习专栏的正确姿势

点击查看原文

专栏应该怎样学?

索引 + 摘要 + 详情

在第一次听音频或浏览文章的时候,你可以走马观花,并不用去细扣每一个概念和每一句话。让自己对每一个主题、每一个问题和每一个要点都要有一个大概的印象就可以了。

如此一来,当想到或遇到某方面的疑惑的时候,你就可以有一个大致的方向,并且知道怎么从专栏里找出相应的内容。

这就是所谓的 粗读,相当于在你的脑袋里面存了一份 索引,甚至是一份 摘要。利用这种快速的学习方式,你往往可以在有限的精力和无限的知识之间做出适合你的权衡。

Note: 先粗读、再细读,然后再拿这个专栏当作知识手册来用。重要的是真正的理解和积极的实践,而不是阅读的速度。

实践的正确姿势

去写网络爬虫吧

优秀的 Go 项目推荐

阅读优秀的项目源码也是一个很重要的学习途径

Note: 在这幅图的左上角,有我对图中各种符号的说明,大家在进一步读图之前需要先看一下。参看这些项目的顺序完全由你自己决定,不过我建议从“贴近你实际工作的那个方面”入手,然后可以是“你感兴趣的方面”,最后有机会再看其他的项目。千万不要贪多,要循序渐进着来。

Go 进阶高级知识点

我的关注点

开始学习前,先按照 目录 结合我的实际情况对将要学习的内容做个简单标记和梳理,以及明确学习要达到的目标,如果专栏中没有讲到的,则需要自己去查阅资料补充完整。

  • [模块一 | 第一章] [概念理解]:什么是命令源码文件、库源码文件,有啥区别? 程序实体和我理解的有何不同?
  • [模块二 | 第二章] [深入原理]:数组+切片底层数据结构? 区别? 实现方式?
  • [模块二 | 第二章] [熟练掌握]:第一次接触这个包, 那么先熟练掌握容器数据类型:heap、list、ring 的基本概念、使用方式
  • [模块二 | 第二章] [查缺补漏]:除了我已知的关于字典的约束,文中还会提到那些呢?
  • [模块二 | 第二章] [熟练掌握]:通道的高级玩法还有那些我还没掌握呢?
  • [模块二 | 第二章] [熟练掌握]:Go 中函数是第一类公民,目前关于函数的高级用法还不熟练? 看看专栏里会提到那些吧
  • [模块二 | 第二章] [查缺补漏]:结构体和方法还有没掌握的知识点吗?
  • [模块二 | 第二章] [深入理解]:interface 的坑还有那些?
  • [模块二 | 第二章] [深入理解]:Go中指针的操作的坑
  • [模块二 | 第二章] [熟练掌握]:defer 的坑有哪些,defer的实现深入理解
  • [模块二 | 第二章] [熟练掌握]:recover的用法
  • [模块三 | 第四章] [查缺补漏]:如何收集更加详细的测试过程记录?
  • [模块三 | 第四章] [补漏+深入]:标准库
    • 同步相关:sync.Mutex & sync.RWMutex、sync.Pool、sync.Map、context.Context …
    • 字符&字节:Unicode、strings、bytes、strconv …
    • 操作系统与文件
    • io、bufio
    • 使用 os 包中的 API 操作文件
    • 使用 os 包中的 API 操作进程
    • os/exec 和 os/signal 包
    • net & net/http 相关
  • [模块三 | 第五章] [查缺补漏]:Profiling 还有那些知识点或技巧没掌握呢?

学习笔记

教程内容很完善,但对我而言,只是一个查缺补漏的过程,笔记内容概览:

See Also