go-concurrency-patterns
學習生產環境中的 Go 並行模式
並行 Go 程式碼難以設計和調試。本技能提供可快速適用的成熟模式、範例和最佳實踐。
下載技能 ZIP
在 Claude 中上傳
前往 設定 → 功能 → 技能 → 上傳技能
開啟並開始使用
測試它
正在使用「go-concurrency-patterns」。 Suggest a pattern for processing many jobs with cancellation.
預期結果:
- 使用帶有緩衝工作通道的工作池
- 傳遞上下文以在取消時停止工作
- 在所有工作完成後關閉結果通道
- 當需要錯誤時提前失敗,請添加 errgroup
正在使用「go-concurrency-patterns」。 How do I run multiple functions in parallel and wait for all?
預期結果:
- 使用 sync.WaitGroup 等待 goroutine
- 在啟動每個 goroutine 之前使用 wg.Add(1) 添加
- 在每個 goroutine 的 defer 中呼叫 wg.Done()
- 在啟動所有 goroutine 後使用 wg.Wait() 阻塞
正在使用「go-concurrency-patterns」。 What happens if I close a channel from the receiver side?
預期結果:
- 這會導致 panic
- 只能從傳送端關閉 channel
- 或使用專門負責關閉的獨立 goroutine
- 在傳送前檢查 channel 是否已開啟
安全審計
安全All 58 static findings are FALSE POSITIVES. The scanner matched substrings without semantic context: 'C2' from 'close()', 'weak crypto' from 'WaitGroup', 'dynamic import' from Go import statements, 'backtick execution' from markdown code formatting, and 'path traversal' from code comments. This is a pure documentation skill containing only markdown and JSON files with Go code examples. No executable code, no network calls beyond documentation links, no filesystem access beyond its own files.
風險因素
品質評分
你能建構什麼
設計並行服務
為生產服務選擇工作池、管線和取消模式。
規劃優雅關機
為長時間執行的程序添加安全的關機和超時處理。
了解並行基礎
透過清晰的範例學習 goroutine、channel 和同步機制。
試試這些提示
用小範例為初學者解釋 goroutine 和 channel。
提供一個帶有上下文取消、工作通道和結果通道的 Go 工作池模式。
使用上下文和 OS 訊號展示優雅關機模式,並附上簡短說明。
比較信號量和 errgroup 限制模式,並為 API 擷取任務推薦其中一種。
最佳實務
- 在所有並行操作中使用上下文進行取消和截止期限管理
- 只能從傳送端關閉 channel 以避免 panic
- 確保 goroutine 有明確的退出路徑並定期檢查 ctx.Done
避免
- 使用 time.Sleep 進行同步而非適當的原語
- 從接收端關閉 channel 導致 panic
- 在長時間執行的循環中忽略 ctx.Done 導致 goroutine 洩漏