Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Go Learning · 资深 Java → Go 进阶路径</title> <link rel="stylesheet" href="./assets/style.css" /> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/themes/prism-tomorrow.min.css" /> </head> <body> <div class="layout"> <!-- SIDEBAR --> <aside class="sidebar"> <a href="./README.html" class="active" class="home-link">⬢ Go Learning</a> <a href="./study-plan.html">学习总览 · Study Plan</a> <a href="./PROJECT_RULES.html">📐 PROJECT RULES</a> <h2>📚 架构对照 docs</h2> <a href="./docs/java_go_architecture.html">Java/Go 架构思路</a> <a href="./docs/java_go_concurrency.html">Java/Go 并发对比</a> <a href="./docs/java_go_design_patterns.html">Java/Go 设计模式</a> <a href="./docs/java_go_microservices.html">Java/Go 微服务</a> <h2>Unit 1 · 基础与心智模型</h2> <a href="./unit_01_fundamentals/lesson_00_packages/lesson_00_packages.html">L0 · Packages</a> <a href="./unit_01_fundamentals/lesson_01_basics/lesson_01_basics.html">L1 · Basics 基础语法</a> <a href="./unit_01_fundamentals/lesson_02_collections/lesson_02_collections.html">L2 · Collections 集合</a> <a href="./unit_01_fundamentals/lesson_03_structs_interfaces/lesson_03_structs_interfaces.html">L3 · Struct & Interface</a> <a href="./unit_01_fundamentals/lesson_04_pointers/lesson_04_pointers.html">L4 · Pointers 指针</a> <a href="./unit_01_fundamentals/lesson_05_error_handling/lesson_05_error_handling.html">L5 · Error Handling</a> <a href="./unit_01_fundamentals/lesson_06_java_go_pitfalls/lesson_06_java_go_pitfalls.html">L6 · Java→Go 坑点专项</a> <h2>Unit 2 · 并发与并行</h2> <a href="./unit_02_concurrency/lesson_01_goroutine/lesson_01_goroutine.html">L1 · Goroutine</a> <a href="./unit_02_concurrency/lesson_02_channel/lesson_02_channel.html">L2 · Channel</a> <a href="./unit_02_concurrency/lesson_03_select/lesson_03_select.html">L3 · Select</a> <a href="./unit_02_concurrency/lesson_04_context/lesson_04_context.html">L4 · Context</a> <a href="./unit_02_concurrency/lesson_05_sync_atomic/lesson_05_sync_atomic.html">L5 · Sync / Atomic</a> <a href="./unit_02_concurrency/lesson_06_race_detector/lesson_06_race_detector.html">L6 · Race Detector</a> <h2>Unit 3 · 底层原理 & 性能</h2> <a href="./unit_03_performance/lesson_01_gmp_scheduler/lesson_01_gmp_scheduler.html">L1 · G-M-P 调度器</a> </aside> <!-- MAIN --> <main> <h1>Go Learning · 资深 Java 工程师的 Go 进阶之路</h1> <p>面向有 Java 高并发分布式微服务经验的资深后端工程师,目标:在大厂微服务场景下独立 <strong>阅读、设计、评审、优化</strong> 极致 Go 代码。本项目以 <em>Unit → Lesson → Section</em> 三级架构组织,所有示例可运行、可测试。</p> <div class="callout tip"> <span class="callout-title">本仓库目标</span> 抛弃 <strong>面向对象/异常流</strong> 的 Java 心智,拥抱 <strong>组合 / 鸭子接口 / 多返回值 error / CSP 并发</strong>。每节都带 Java 对照、运行示例与坑点。 </div> <h2 id="env">⚙ 环境要求</h2> <ul> <li>Go ≥ <code>1.20</code></li> <li>推荐 GoLand / VS Code + Go 插件</li> <li>建议:开启 <code>gofmt</code> 自动格式化、<code>golangci-lint</code> 静态检查</li> </ul> <h2 id="mindset">🧠 Java ↔ Go 核心心智对照</h2> <div class="diagram"> <div class="mermaid"> flowchart LR subgraph J["☕ Java 心智"] J1[Class + 继承] J2[Interface 显式 implements] J3[Thread + 线程池] J4[synchronized / ReentrantLock] J5[try/catch + Exception] J6[NullPointerException] end subgraph G["⬢ Go 心智"] G1[Struct + 匿名嵌入] G2[Interface 鸭子隐式实现] G3[Goroutine 用户态协程] G4[sync.Mutex / channel 通信] G5[多返回值 error 显式处理] G6[未初始化指针 panic] end J1 -.映射.-> G1 J2 -.映射.-> G2 J3 -.映射.-> G3 J4 -.映射.-> G4 J5 -.映射.-> G5 J6 -.映射.-> G6 classDef java fill:#cba6f7,stroke:#cba6f7,color:#11111b; classDef go fill:#89b4fa,stroke:#89b4fa,color:#11111b; class J1,J2,J3,J4,J5,J6 java class G1,G2,G3,G4,G5,G6 go </div> <div class="diagram-caption">图 1 · Java 概念到 Go 的迁移映射</div> </div> <table> <thead><tr><th>Java 概念</th><th>Go 对应</th><th>本质差异</th></tr></thead> <tbody> <tr><td><code>Class</code></td><td><code>struct</code> + 方法</td><td>无继承,仅组合</td></tr> <tr><td><code>interface</code></td><td><code>interface</code></td><td>隐式实现 · 鸭子类型</td></tr> <tr><td><code>extends</code></td><td>匿名嵌入</td><td>语法糖,非父子关系</td></tr> <tr><td><code>Thread</code></td><td>Goroutine</td><td>用户态调度,栈动态扩容</td></tr> <tr><td><code>synchronized</code></td><td><code>sync.Mutex</code></td><td>更轻量,性能更高</td></tr> <tr><td><code>Future</code></td><td><code>channel</code></td><td>CSP 同步通信</td></tr> <tr><td><code>Exception</code></td><td><code>error</code> 接口</td><td>错误是值,必须显式处理</td></tr> <tr><td><code>NullPointerException</code></td><td>指针 panic</td><td>仅未初始化指针触发</td></tr> <tr><td>线程池</td><td>(通常不需要)</td><td>Goroutine 足够轻量</td></tr> </tbody> </table> <h2 id="roadmap">🗺 学习路线图</h2> <h3>Unit 1 · Go 基础与心智模型 <span class="badge badge-tip">DONE</span></h3> <div class="card-grid"> <a class="card" href="./unit_01_fundamentals/lesson_01_basics/lesson_01_basics.html"> <div class="card-title">Lesson 1 · Basics</div> <div class="card-desc">基础语法、控制流、可见性、Java→Go 关键字映射、深浅拷贝</div> <div class="card-meta"><span class="status-done">● 完成</span><span>5 Sections</span></div> </a> <a class="card" href="./unit_01_fundamentals/lesson_02_collections/lesson_02_collections.html"> <div class="card-title">Lesson 2 · Collections</div> <div class="card-desc">数组、Slice 底层 3 字段、Map 渐进式扩容</div> <div class="card-meta"><span class="status-done">● 完成</span><span>3 Sections</span></div> </a> <a class="card" href="./unit_01_fundamentals/lesson_03_structs_interfaces/lesson_03_structs_interfaces.html"> <div class="card-title">Lesson 3 · Struct & Interface</div> <div class="card-desc">内存布局、方法接收者、匿名嵌入、鸭子接口、iface/eface</div> <div class="card-meta"><span class="status-done">● 完成</span><span>2 Sections</span></div> </a> <a class="card" href="./unit_01_fundamentals/lesson_04_pointers/lesson_04_pointers.html"> <div class="card-title">Lesson 4 · Pointers</div> <div class="card-desc">值/指针语义、逃逸分析入门</div> <div class="card-meta"><span class="status-done">● 完成</span></div> </a> <a class="card" href="./unit_01_fundamentals/lesson_05_error_handling/lesson_05_error_handling.html"> <div class="card-title">Lesson 5 · Error Handling</div> <div class="card-desc">error 接口、wrap/unwrap、panic/recover</div> <div class="card-meta"><span class="status-done">● 完成</span><span>2 Sections</span></div> </a> <a class="card" href="./unit_01_fundamentals/lesson_06_java_go_pitfalls/lesson_06_java_go_pitfalls.html"> <div class="card-title">Lesson 6 · Java → Go 坑点</div> <div class="card-desc">值/指针、interface nil、错误处理、并发四大坑</div> <div class="card-meta"><span class="status-done">● 完成</span><span>4 Sections</span></div> </a> </div> <h3>Unit 2 · 并发与并行核心 <span class="badge badge-tip">DONE</span></h3> <div class="card-grid"> <a class="card" href="./unit_02_concurrency/lesson_01_goroutine/lesson_01_goroutine.html"> <div class="card-title">Lesson 1 · Goroutine & CSP</div> <div class="card-desc">Goroutine 创建、调度、CSP 模型、WaitGroup</div> <div class="card-meta"><span class="status-done">● 完成</span><span>4 Sections</span></div> </a> <a class="card" href="./unit_02_concurrency/lesson_02_channel/lesson_02_channel.html"> <div class="card-title">Lesson 2 · Channel 模式</div> <div class="card-desc">无/有缓冲、关闭、单向、生产者消费者</div> <div class="card-meta"><span class="status-done">● 完成</span><span>6 Sections</span></div> </a> <a class="card" href="./unit_02_concurrency/lesson_03_select/lesson_03_select.html"> <div class="card-title">Lesson 3 · Select & Timeout</div> <div class="card-desc">多路复用、超时、非阻塞、Fan-in / Fan-out</div> <div class="card-meta"><span class="status-done">● 完成</span><span>5 Sections</span></div> </a> <a class="card" href="./unit_02_concurrency/lesson_04_context/lesson_04_context.html"> <div class="card-title">Lesson 4 · Context</div> <div class="card-desc">设计哲学、Context 树、级联取消</div> <div class="card-meta"><span class="status-done">● 完成</span><span>2 Sections</span></div> </a> <a class="card" href="./unit_02_concurrency/lesson_05_sync_atomic/lesson_05_sync_atomic.html"> <div class="card-title">Lesson 5 · Sync & Atomic</div> <div class="card-desc">Mutex / RWMutex / Once / Map / atomic</div> <div class="card-meta"><span class="status-done">● 完成</span><span>1 Section</span></div> </a> <a class="card" href="./unit_02_concurrency/lesson_06_race_detector/lesson_06_race_detector.html"> <div class="card-title">Lesson 6 · Race Detector</div> <div class="card-desc"><code>-race</code> 用法,Happens-Before 模型</div> <div class="card-meta"><span class="status-done">● 完成</span><span>1 Section</span></div> </a> </div> <h3>Unit 3 · 底层原理与性能调优 <span class="badge badge-new">规划中</span></h3> <ul> <li>G-M-P 调度器模型与阻塞原理</li> <li>GC 三色标记法</li> <li>内存逃逸分析 (Escape Analysis)</li> <li>pprof CPU / Memory / Goroutine 泄露排查</li> </ul> <h3>Unit 4 · 工程化与测试 <span class="badge badge-new">规划中</span></h3> <ul> <li>Go 测试基础与 TDD</li> <li>DI / Mock 测试</li> <li>Benchmark 基准测试</li> <li>Fuzzing 模糊测试</li> </ul> <h3>Unit 5 · 大厂微服务实战 <span class="badge badge-new">规划中</span></h3> <ul> <li>RPC + Protobuf / gRPC</li> <li>中间件模式 · 请求拦截</li> <li>超时 / 重试 / 幂等</li> <li>限流 / 熔断</li> <li>Metrics · Tracing · Logging</li> </ul> <h2 id="run">🚀 运行方式</h2> <pre class="language-bash"><code>go run . # 跑所有 Lesson 的演示 go test ./... # 跑所有单元测试 go test -race ./... # 并发阶段必加 race 检测</code></pre> <div class="page-nav"> <a class="prev" href="./README.html"> <div class="label">←</div> <div class="title">就在这里</div> </a> <a class="next" href="./study-plan.html"> <div class="label">下一步 →</div> <div class="title">学习总览 · Study Plan</div> </a> </div> </main> </div> <script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-core.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/autoloader/prism-autoloader.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/mermaid@10.9.0/dist/mermaid.min.js"></script> <script src="./assets/site.js"></script> </body> </html>