cnymw
GolangStudy
HTML

《GolangStudy》:从简单到难最全总结,go基础,数据结构,算法,设计模式

Last updated Jul 4, 2026
502
Stars
65
Forks
0
Issues
0
Stars/day
Attention Score
24
Language breakdown
HTML 100.0%
Files click to expand
README

GolangStudy

本项目旨在指导程序员们如何从基础开始系统的学习 Go 语言,并学习开发时所需知识点。

Go 是一门非常容易上手的语言,语法简洁,代码易读,如果你有常用语言的基础,那看一本Go 语言圣经后便可上手开发业务代码。

本项目不是博客,一个问题不会讲的特别细致,如果想要更加深入的了解某个知识点的话,建议使用搜索引擎去搜索经典博客加深理解,项目中也会推荐一些好的文章供参考。

本项目更加看重的是对于知识点系统的一个总结,能够通过一句话,一张思维导图来把一类知识进行讲解,这样在面试前把所有的思维导图都过一遍就快的吸收知识点,平时空余的时候拿出思维导图进行复习也能加深理解。

作者通过该学习笔记,拿到过腾讯云,金山办公,青藤云,神州数码等云相关企业 offer,工作岗位是 Golang 服务端开发。

如何利用思维导图学习

对于一个新的知识点,我一般是这样结合思维导图来学习的:

  • 找到一个比较详细的资料,例如博客,书籍等,如果在 baidu 上面搜不到易读的内容(可能性较大),可以尝试用 bing 看看英文的资料,能够翻墙的可以使用 google。
  • 通读全文,将每一个陌生的专业词汇记录下来,用于更进一步的学习,逐步发散,逐渐扩充自己的知识库。
  • 捋清文章脉络,找到每个章节的核心概要,将概要记录到思维导图子标题上。
  • 遍历每个概要,逐步下沉概要里的各个关键知识点,记录到思维导图。
  • 比对文章内容和思维导图,确认没有遗漏的知识点。
  • 经常回顾记录的思维导图,用于加深知识点的记忆。
  • 用持续进步的角度审视所记录的思维导图,思维导图不是标准答案,只是你对一个知识点的总结,不一定是绝对正确的,可以持续优化,持续总结出更好的内容。
  • 思维是抽象的,网状的,不是线性的,很多较难的知识点如果用一句线性的语句来描述会非常的难以理解,所以要将重难点内容解析成思维导图,要习惯这种思维模式,这样才算真正的理解了思维导图的作用。

Golang 学习路线

GolangStudy系列|学习方法|Golang学习路线

Golang-学习路线.png

Golang 学习目录

go
Golang
Linux
Linux
数据结构
数据结构
算法
算法
设计模式
设计模式
Network
网络
kubernetes
Kubernetes
Docker
Docker
leetcode
leetcode
Kafka
Kafka
redis
redis
Databases
mysql
ElasticSearch
Elastic


Golang语言

Golang 语言的学习可以分为以下方向:

  • 基础:开发核心能力
  • 高级机制:线程调度,垃圾回收等,进阶的面试经常会考
  • 源码解读:对 Golang 加深理解,进阶开发有帮助
  • 常用框架:对生产开发有帮助,可以简单了解下,在技术选型的时候可以快速做出判断
学习目录如下:
  • 基础
- GolangStudy系列|Golang学习|Golang入门 - GolangStudy系列|Golang学习|Golang程序结构 - GolangStudy系列|Golang学习|Golang基础数据类型 - Golang 并发 - Golang 接口 - Golang 检测竞态条件
  • 进阶
- Golang 调度 - Golang 垃圾回收 - Golang channel - Golang 性能分析:pprof实战
  • 深入 Golang sdk 源码
- Golang 源码解读 标识符 - Golang 源码解读 双向链表 list - Golang 源码解读 程序分析pprof - Golang 源码解读 同步模块sync mutex - Golang 源码解读 同步模块sync once - Golang 源码解读 垃圾回收 - Golang 源码解读 channel
  • 拓展 zap
- Golang 源码解读 高性能日志库 zap
  • 拓展 grpool
- Golang 源码解读 轻量级线程池 grpool
  • 面试题
- Golang 有几种连接字符串的方法?

Kubernetes

Golang 常用在微服务,分布式场景,不经常用于较大的业务场景中。

常见的如开发一个微服务,部署到阿里/腾讯/华为云中,或者云原生自建的 Kubernetes 里,这个时候就需要学习并精通 Kubernetes 相关的知识。

很多企业在自建云,或者做云原生的转型,部署服务会逐渐的使用 Kubernetes,而放弃之前的物理机,虚拟机部署模式。所以面试的时候问到 Kubernetes 是比较常见的。

学习目录如下:

- Kubernetes 概述|视频学习|完整版 - Kubernetes 组件|视频学习|完整版 - Kubernetes 理解对象|视频学习|完整版 - Kubernetes 标签|视频学习|完整版 - Kubernetes namespace|视频学习|完整版 - Kubernetes 节点|视频学习|完整版 - Kubernetes 工作负载 - Kubernetes 网络模型

Docker


linux

- 进程和线程,协程的区别
  • 专业博客
- redhat sysadmin

数据结构

- - 顺序表 - 链表 - 队列
- 二叉树 - 二叉搜索树(TODO) - B树和B+树之间的区别

算法

- 插入排序 - 堆排序 - 归并排序 - 快速排序

mysql

- mysql InnoDB 内存结构 - mysql InnoDB 磁盘结构 - mysql InnoDB 聚集索引和辅助索引
  • InnoDB 锁和事务模型
- mysql InnoDB 多版本控制 - mysql InnoDB 锁机制 - mysql InnoDB 事务隔离级别 - mysql InnoDB 锁定读 - mysql InnoDB 死锁 - mysql InnoDB 死锁案例
  • Mysql常用工具
- mysql 慢查询分析工具 mysqldumpslow - mysql 压测工具 mysqlslap

设计模式


redis

- redis 有什么作用 - redis 是单线程但为什么执行速度这么快

elasticsearch


kafka

- kafka 为什么会丢消息?

---

网络

- HTTP 1.0、1.1、2.0、3.0 区别

分布式


leetcode

  • 链表
- leetcode-2-两数相加 - leetcode-19-删除链表的倒数第 N 个结点 - leetcode-21-合并两个有序链表 - leetcode-61-旋转链表 - leetcode-92-反转链表II
  • 哈希表
- leetcode-1-两数之和 - leetcode-3-无重复字符的最长子串 - leetcode-30-串联所有单词的子串 - leetcode-242-有效的字母异位词 - leetcode-349-两个数组的交集 - leetcode-350-两个数组的交集2
  • 动态规划
- leetcode-5-最长回文子串 - leetcode-53-最大子序和 - leetcode-64-最小路径和 - leetcode-70-爬楼梯 - leetcode-115-不同的子序列
- leetcode-100-相同的树 - leetcode-1038-从二叉搜索树到更大和树
- leetcode-150-逆波兰表达式求值 - leetcode-224-基本计算器 - leetcode-225-用队列实现栈

面试题库


参考资料

🔗 More in this category

© 2026 GitRepoTrend · cnymw/GolangStudy · Updated daily from GitHub