自信地構建並發 Go 應用程式。學習生產環境就緒的 goroutines、channels、worker pools 和優雅關閉模式,以避免競爭條件和資源洩漏。
下载技能 ZIP
在 Claude 中上传
前往 设置 → 功能 → 技能 → 上传技能
开启并开始使用
测试它
正在使用“go-concurrency-patterns”。 建立一個具有 3 個工作者的 worker pool,從 channel 處理工作
预期结果:
這是一個具有 3 個工作者的 worker pool 實作,它並發處理工作並透過結果 channel 收集結果,使用 sync.WaitGroup 進行適當的同步。
正在使用“go-concurrency-patterns”。 展示如何使用 errgroup 進行並發 HTTP 請求
预期结果:
此範例展示 golang.org/x/sync/errgroup 以並發獲取多個 URL,其中第一個錯誤會透過 context 傳播取消所有待處理的請求。
正在使用“go-concurrency-patterns”。 實作 semaphore 以限制並發操作
预期结果:
我提供兩種 semaphore 方法:使用 golang.org/x/sync/semaphore.Weighted 進行加權 semaphore,以及基於 channel 的 struct{} semaphore 用於簡單的速率限制。
安全审计
安全All 44 static analysis findings are false positives from markdown-enclosed Go code examples. The skill contains legitimate educational content about Go concurrency patterns with no executable code or security risks.
质量评分
你能构建什么
建構並發微服務
使用 worker pools 建立可擴展的 Go 服務,同時處理多個請求並有效管理資源
實作資料處理管線
設計 fan-out/fan-in 管線以並行處理大型資料集,並提供適當的錯誤處理和取消功能
除錯競爭條件
使用適當的同步模式和競爭檢測工具,識別並修正現有 Go 程式碼中的並發錯誤
试试这些提示
展示如何在 Go 中建立一個 worker pool,使用 5 個並發工作者���理 100 個工作
撰寫一個具有優雅關閉功能的 Go 伺服器,處理 SIGTERM 訊號並等待進行中的請求完成
在 Go 中建立一個 fan-out/fan-in 管線,透過 3 個階段處理項目,每個階段有 5 個工作者
檢視這段 Go 程式碼並識別潛在的 goroutine 洩漏,然後展���如何使用 context 取消來修正它們
最佳实践
- 在並發操作中始終使用 context.Context 進行取消和設定截止時間
- 僅從發送者端關閉 channel 以避免 panic
- 在 goroutines 之間的通訊中優先使用 channels 而非 mutexes
- 使用 sync.WaitGroup 或 errgroup 等待 goroutine 完成
避免
- 使用 time.Sleep 進行同步,而非使用 channels 或 WaitGroup 等適當的原語
- 從接收者端關閉 channel,這會導致 panic
- 忘記檢查 ctx.Done(),這會導致 goroutine 洩漏
- ��沒有適當同步的情況下於 goroutines 之間共享記憶體