Files
cs-note/hzh/GolangStar/Index.md
T

198 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
tags: [go, golang, learning-path]
create time: 2026-06-07 14:30
---
# 🧭 Go 语言进阶之路 - 知识库索引
## 概述
本索引整理自「Go 语言进阶之路」学习路线,覆盖 **8 大知识板块**,从入门到源码阅读、面试准备一站式闭环。请严格按以下顺序阅读,每完成一个板块再进入下一个。
> [!tip] 阅读策略
> - **语言基础 → 并发编程**:先掌握语法,再深入并发(Goroutine/Channel/Sync)
> - **语言基础 → 语言原理**:基础篇讲"怎么用",原理篇讲"为什么",配对阅读效果最佳
> - **框架实战** 可独立进行,但建议有基础篇铺垫后再上手
> - **面试题库** 作为复习检验工具,建议在对应原理篇完成后刷一遍
```mermaid
graph LR
root["Go语言进阶之路"] --> p1["Go语言前景"]
root --> p2["环境准备"]
root --> p3["语言基础"]
root --> p4["并发编程"]
root --> p5["框架实战"]
root --> p6["语言原理"]
root --> p7["测试篇"]
root --> p8["面试题库"]
```
---
## 一、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 实现 |
---
## 快速导航
| 目标 | 直接跳转 |
|------|---------|
| 从零开始 | 从 **一、Go 语言前景** 按序阅读 |
| 🔧 搭建环境 | [[hzh/GolangStar/Go环境搭建/Go环境搭建]] |
| 📏 查阅规范 | [[hzh/GolangStar/Go编码规范/Go编码规范]] |
| ⚡ 速查语法 | **三、语言基础**(全部 18 小节) |
| 🚀 攻克并发 | **四、并发编程**(10 个并发专题) |
| 🏗️ 动手框架 | **五、框架实战**(Gin + GORM) |
| 🔬 深入源码 | **六、语言原理**(13 篇源码解析) |
| ✅ 刷题检验 | **八、面试题库**(12 套面试题) |