234 lines
11 KiB
Markdown
234 lines
11 KiB
Markdown
---
|
||
tags: [go, golang, learning-path]
|
||
create time: 2026-06-07 14:30
|
||
---
|
||
|
||
# GolangStar — Go 语言进阶之路 · 知识库索引
|
||
|
||
## 概述
|
||
|
||
本索引整理自「Go 语言进阶之路」学习路线,覆盖 **8 大知识板块**,从入门到源码阅读、面试准备一站式闭环。请严格按以下顺序阅读,每完成一个板块再进入下一个。
|
||
|
||
> [!tip] 阅读策略
|
||
> - **语言基础 -> 并发编程**:先掌握语法,再深入并发(Goroutine/Channel/Sync)
|
||
> - **语言基础 <-> 语言原理**:基础篇讲"怎么用",原理篇讲"为什么",配对阅读效果最佳
|
||
> - **框架实战** 可独立进行,但建议有基础篇铺垫后再上手
|
||
> - **面试题库** 作为复习检验工具,建议在对应原理篇完成后刷一遍
|
||
|
||
```mermaid
|
||
graph LR
|
||
root["GolangStar 学习路线"] --> p1["一、Go语言前景"]
|
||
root --> p2["二、环境准备"]
|
||
root --> p3["三、语言基础"]
|
||
root --> p4["四、并发编程"]
|
||
root --> p5["五、框架实战"]
|
||
root --> p6["六、语言原理"]
|
||
root --> p7["七、测试篇"]
|
||
root --> p8["八、面试题库"]
|
||
|
||
p3 --> p3a["入门语法"]
|
||
p3 --> p3b["复合类型"]
|
||
p3 --> p3c["高级特性"]
|
||
|
||
p6 --> p6a["底层原理"]
|
||
p6 --> p6b["运行时原理"]
|
||
|
||
style root fill:#4CAF50,color:#fff
|
||
style p3 fill:#2196F3,color:#fff
|
||
style p4 fill:#FF9800,color:#fff
|
||
style p6 fill:#9C27B0,color:#fff
|
||
style p8 fill:#F44336,color:#fff
|
||
```
|
||
|
||
## 快速导航
|
||
|
||
| 目标 | 直接跳转 |
|
||
|------|---------|
|
||
| 从零开始 | 从 **一、Go 语言前景** 按序阅读 |
|
||
| 搭建环境 | [[hzh/GolangStar/Go环境搭建/Go环境搭建]] |
|
||
| 查阅规范 | [[hzh/GolangStar/Go编码规范/Go编码规范]] |
|
||
| 速查语法 | **三、语言基础**(全部 18 小节) |
|
||
| 攻克并发 | **四、并发编程**(10 个并发专题) |
|
||
| 动手框架 | **五、框架实战**(Gin + GORM) |
|
||
| 深入源码 | **六、语言原理**(13 篇源码解析) |
|
||
| 刷题检验 | **八、面试题库**(12 套面试题) |
|
||
|
||
---
|
||
|
||
## 一、Go 语言前景 📗
|
||
|
||
> 了解 Go 的价值定位与发展趋势,回答「为什么学 Go」。
|
||
|
||
| # | 专题 | 文件 | 说明 |
|
||
|---|------|------|------|
|
||
| 1 | 应用场景分析 | [[hzh/GolangStar/Go语言前景/Go语言前景]] | Cloud Native、微服务、CLI 工具等核心场景 |
|
||
| 2 | 为什么选择 Go | *(同上)* | 简洁语法、原生并发、高性能编译 |
|
||
| 3 | 发展趋势 | *(同上)* | Go 1.2x+ 演进方向与社区生态 |
|
||
|
||
---
|
||
|
||
## 二、环境准备 📘
|
||
|
||
> 搭建开发环境与编写规范,为高效编码打基础。
|
||
|
||
| # | 专题 | 文件 | 说明 |
|
||
|---|------|------|------|
|
||
| 1 | Go 环境搭建 | [[hzh/GolangStar/Go环境搭建/Go环境搭建]] | goenv/gosup 安装、GOPROXY 配置 |
|
||
| 2 | Go 编码规范 | [[hzh/GolangStar/Go编码规范/Go编码规范]] | golint/golangci-lint、格式化约定 |
|
||
|
||
---
|
||
|
||
## 三、语言基础 📙
|
||
|
||
> Go 语法体系,从变量类型到控制流,再到函数式编程范式。
|
||
|
||
### 入门
|
||
|
||
| # | 专题 | 文件 | 说明 |
|
||
|---|------|------|------|
|
||
| 1 | 语言代码结构 | [[hzh/GolangStar/Go语言基础/Go语言代码结构]] | package/import/main 三件套 |
|
||
| 2 | 命名规范 | [[hzh/GolangStar/Go语言基础/Go语言命名规范]] | unexported、驼峰、缩写规则 |
|
||
| 3 | 变量 | [[hzh/GolangStar/Go语言基础/Go语言变量]] | var/短声明/零值/盲点 |
|
||
| 4 | 常量 | [[hzh/GolangStar/Go语言基础/Go语言常量]] | const/iota/类型常量 |
|
||
| 5 | 运算符 | [[hzh/GolangStar/Go语言基础/Go语言运算符]] | 算术/比较/逻辑位运算/优先级 |
|
||
|
||
### 复合类型
|
||
|
||
| # | 专题 | 文件 | 说明 |
|
||
|---|------|------|------|
|
||
| 6 | 结构体 | [[hzh/GolangStar/Go语言基础/Go语言结构体]] | struct 定义、嵌入、组合 |
|
||
| 7 | 数组与切片 | [[hzh/GolangStar/Go语言基础/Go语言数组与切片]] | array vs slice、append/拷贝陷阱 |
|
||
| 8 | Map | [[hzh/GolangStar/Go语言基础/Go语言Map]] | 创建/增删改查/遍历顺序随机性 |
|
||
|
||
### 控制流
|
||
|
||
| # | 专题 | 文件 | 说明 |
|
||
|---|------|------|------|
|
||
| 9 | 条件语句 | [[hzh/GolangStar/Go语言基础/Go语言条件句]] | if/switch/select(初识) |
|
||
| 10 | 循环 | [[hzh/GolangStar/Go语言基础/Go语言循环]] | for 是唯一循环关键字 |
|
||
|
||
### 高级特性
|
||
|
||
| # | 专题 | 文件 | 说明 |
|
||
|---|------|------|------|
|
||
| 11 | 指针 | [[hzh/GolangStar/Go语言基础/Go语言指针]] | &*/new/make 的区别 |
|
||
| 12 | 函数 | [[hzh/GolangStar/Go语言基础/Go语言函数]] | 多返回值/命名返回/变参/闭包 |
|
||
| 13 | 方法 | [[hzh/GolangStar/Go语言基础/Go语言方法]] | receiver 值接收者 vs 指针接收者 |
|
||
| 14 | 接口 | [[hzh/GolangStar/Go语言基础/Go语言接口]] | 隐式实现、空接口、类型断言 |
|
||
| 15 | Error | [[hzh/GolangStar/Go语言基础/Go语言error]] | error 接口、errors.New、fmt.Errorf(%w) |
|
||
| 16 | Defer | [[hzh/GolangStar/Go语言基础/Go语言defer]] | LIFO 执行顺序、延迟计算 |
|
||
| 17 | 异常捕获 | [[hzh/GolangStar/Go语言基础/Go语言异常捕获]] | panic/recover 机制 |
|
||
| 18 | 依赖管理 | [[hzh/GolangStar/Go语言基础/Go语言依赖管理]] | go.mod/go.sum/mod tidy |
|
||
|
||
---
|
||
|
||
## 四、并发编程 📕
|
||
|
||
> Go 的核心竞争力 —— 从 Goroutine 到完整并发模式设计。
|
||
|
||
| # | 专题 | 文件 | 说明 |
|
||
|---|------|------|------|
|
||
| 1 | 并发概述 | [[hzh/GolangStar/Go语言进阶/并发概述]] | 共享内存并发理念、CSP 模型 |
|
||
| 2 | Goroutine | [[hzh/GolangStar/Go语言进阶/Goroutine]] | 轻量级线程、调度基础 |
|
||
| 3 | Channel | [[hzh/GolangStar/Go语言进阶/Channel]] | 有界/无界、单向、关闭语义 |
|
||
| 4 | Sync 同步原语 | [[hzh/GolangStar/Go语言进阶/Sync]] | Mutex/RWMutex/Once/WaitGroup/Pool |
|
||
| 5 | Select 多路复用 | [[hzh/GolangStar/Go语言进阶/Select]] | select/panic 空 select、超时模式 |
|
||
| 6 | Context 上下文 | [[hzh/GolangStar/Go语言进阶/Context]] | WithCancel/Timeout/Value、传播链 |
|
||
| 7 | 定时器 Timer/Ticker | [[hzh/GolangStar/Go语言进阶/定时器]] | time.Timer/TimeTick 精确控制 |
|
||
| 8 | 协程池设计 | [[hzh/GolangStar/Go语言进阶/协程池]] | worker pool 模式、任务队列 |
|
||
| 9 | 反射机制 | [[hzh/GolangStar/Go语言进阶/反射]] | reflect.TypeOf/Value、Kind |
|
||
| 10 | 泛型编程 | [[hzh/GolangStar/Go语言进阶/范型]] | 类型参数、约束、泛型限制 |
|
||
|
||
---
|
||
|
||
## 五、框架实战 📒
|
||
|
||
> Gin + GORM 全栈开发能力。
|
||
|
||
| # | 专题 | 文件 | 说明 |
|
||
|---|------|------|------|
|
||
| 1 | Gin Web 框架 | [[hzh/GolangStar/Go语言框架/gin]] | 路由/中间件/JSON/表单/Middleware |
|
||
| 2 | GORM ORM 框架 | [[hzh/GolangStar/Go语言框架/gorm]] | Model 定义/CRUD/关联关系/事务 |
|
||
|
||
---
|
||
|
||
## 六、语言原理 📓
|
||
|
||
> 深入 runtime 源码,理解每一个关键字背后的机器行为。
|
||
> **建议搭配「语言基础」对应篇章配对阅读。**
|
||
|
||
| # | 专题 | 文件 | 与基础篇对应 |
|
||
|---|------|------|------------|
|
||
| 1 | 程序初始化过程 | [[hzh/GolangStar/Go语言原理/程序初始化]] | import 流程 init() 执行顺序 |
|
||
| 2 | String 底层原理 | [[hzh/GolangStar/Go语言原理/string原理]] | 不可变字符串、string bytes 转换开销 |
|
||
| 3 | Slice 底层原理 | [[hzh/GolangStar/Go语言原理/slice原理]] | array-pointer-length 三字段、扩容策略 |
|
||
| 4 | Map 底层原理 | [[hzh/GolangStar/Go语言原理/map原理]] | hash 数组、溢出桶、写时迁移 |
|
||
| 5 | Sync.Map 原理 | [[hzh/GolangStar/Go语言原理/sync.map原理]] | read/dirty/amended 三表结构 |
|
||
| 6 | Channel 底层原理 | [[hzh/GolangStar/Go语言原理/channel原理]] | hchan 结构、send/recv 全流程 |
|
||
| 7 | Context 底层原理 | [[hzh/GolangStar/Go语言原理/context原理]] | cancel chain、value chain 实现 |
|
||
| 8 | Defer 执行原理 | [[hzh/GolangStar/Go语言原理/defer原理]] | defer 栈、closedefer/opendefer |
|
||
| 9 | Interface 底层原理 | [[hzh/GolangStar/Go语言原理/interface原理]] | itab/witab、空接口优化 |
|
||
| 10 | 逃逸分析 | [[hzh/GolangStar/Go语言原理/逃逸分析]] | 栈 vs 堆分配决策 |
|
||
| 11 | GMP 调度模型 | [[hzh/GolangStar/Go语言原理/gmp调度原理]] | P/L/M、work-stealing、系统线程 |
|
||
| 12 | 内存管理机制 | [[hzh/GolangStar/Go语言原理/内存管理]] | mheap/mspan/mcentral/mcache |
|
||
| 13 | 垃圾回收算法 | [[hzh/GolangStar/Go语言原理/垃圾回收]] | 三色标记 + 写屏障、混合写屏障 |
|
||
|
||
---
|
||
|
||
## 七、测试篇 📔
|
||
|
||
> 单元测、基准测试、表格驱动测试。
|
||
|
||
| # | 专题 | 文件 | 说明 |
|
||
|---|------|------|------|
|
||
| 1 | Go 语言单元测试 | [[hzh/GolangStar/Go语言单测/Go语言单测]] | _test.go 约定、testing.T、assert 用法 |
|
||
| 2 | 基准测试 Benchmark | *(同上)* | b.N 循环、CPU profiling |
|
||
| 3 | 表格驱动测试 | *(同上)* | 一行用例覆盖多种边界 |
|
||
|
||
---
|
||
|
||
## 八、面试题库 📋
|
||
|
||
> 对应各模块的高频面试题,用于查漏补缺。
|
||
> **建议:学完对应原理篇后自行作答,再对照参考解析。**
|
||
|
||
| # | 专题 | 文件 | 覆盖范围 |
|
||
|---|------|------|---------|
|
||
| 1 | 基础语法面试题 | [[hzh/GolangStar/Go面试题库/基础面试题]] | 变量/常量/类型/运算符/控制流 |
|
||
| 2 | Slice 相关面试题 | [[hzh/GolangStar/Go面试题库/Slice面试题]] | append/copy/切片共享底层数组 |
|
||
| 3 | Map 相关面试题 | [[hzh/GolangStar/Go面试题库/Map面试题]] | 遍历顺序/并发安全/底层扩容 |
|
||
| 4 | Channel 相关面试题 | [[hzh/GolangStar/Go面试题库/Channel面试题]] | 缓冲/关闭/死锁场景 |
|
||
| 5 | Sync 同步面试题 | [[hzh/GolangStar/Go面试题库/Sync面试题]] | Mutex/WaitGroup/Once 场景题 |
|
||
| 6 | Context 相关面试题 | [[hzh/GolangStar/Go面试题库/Context面试题]] | 传递/取消/超时模式 |
|
||
| 7 | Interface 相关面试题 | [[hzh/GolangStar/Go面试题库/Interface面试题]] | nil interface/类型断言/继承模拟 |
|
||
| 8 | 反射机制面试题 | [[hzh/GolangStar/Go面试题库/反射面试题]] | TypeOf/Kind/setXX 权限 |
|
||
| 9 | GMP 调度面试题 | [[hzh/GolangStar/Go面试题库/GMP面试题]] | 调度流程/steal/park |
|
||
| 10 | 内存管理面试题 | [[hzh/GolangStar/Go面试题库/内存管理面试题]] | GC/逃逸/分配器 |
|
||
| 11 | 垃圾回收面试题 | [[hzh/GolangStar/Go面试题库/垃圾回收面试题]] | 三色标记/写屏障/STW |
|
||
| 12 | 编程算法面试题 | [[hzh/GolangStar/Go面试题库/代码面试题]] | 常见算法 Go 实现 |
|
||
|
||
---
|
||
|
||
## 学习进度追踪
|
||
|
||
> [!tip] 自我检测清单
|
||
>
|
||
> 在每个板块完成后,尝试回答以下问题来检验学习效果:
|
||
>
|
||
> - [ ] 能用一句话解释 Go 的并发模型吗?
|
||
> - [ ] 能画出 slice 的底层结构并解释扩容规则吗?
|
||
> - [ ] 能说清楚 map 遍历时序为何是随机的吗?
|
||
> - [ ] 能手写一个简单的 channel 通信模式吗?
|
||
> - [ ] 能解释 defer 的执行顺序和有名返回值的关系吗?
|
||
> - [ ] 能描述 GMP 调度模型的协作方式吗?
|
||
> - [ ] 能画出三色标记法的标记流程吗?
|
||
>
|
||
> 全部勾选后,建议进入面试题库模块进行实战检验!
|
||
|
||
---
|
||
|
||
## 关联笔记
|
||
|
||
- 本索引为整个 GolangStar 系列的总入口
|
||
- 每个子文档的底部均有"关联笔记"链接,方便交叉引用
|