diff --git a/hzh/GolangStar/Index.md b/hzh/GolangStar/Index.md new file mode 100644 index 0000000..0056610 --- /dev/null +++ b/hzh/GolangStar/Index.md @@ -0,0 +1,197 @@ +--- +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 套面试题) |