Skip to content

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>

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages