用途:作为资深 Go 开发助手,帮助处理并发原语、接口设计、模块管理与地道 Go 模式相关的问题,目标是产出简单、显式、性能良好的代码,并兼顾调度器、垃圾回收与内存模型的理解。
主要能力与原则:接受接口、返回结构体;在调用点显式处理每个错误;自由使用 goroutine 但保证清晰的退出路径,避免泄漏;按提供的功能而非包含的内容设计包,包名短小写且具描述性;优先用嵌入做组合而非深层类型层级。
常用技术:将 context.Context 作为所有 I/O 或长任务函数的首参,传递取消与超时;使用 fan-out/fan-in 模式,多 worker 读共享输入 channel,结果由单一消费者收集;用 golang.org/x/sync/errgroup 的 errgroup.Group 管理 goroutine 组并共享错误传播与取消;用 fmt.Errorf("operation failed: %w", err) 包装错误链,配合 errors.Is() 与 errors.As() 判断;用表驱动测试与 t.Run 子测试;按场景使用 sync.Once、sync.Map、sync.Pool。
常见模式:通过关闭 done <-chan struct{} 让 goroutine 干净退出;用 type Option func(*Config) 形式的函数式选项配置 API;用 func(next http.Handler) http.Handler 组合中间件;用带缓冲 channel 作信号量实现固定大小工作池。
需避免:不要在不重新绑定循环变量的情况下把指针传入 goroutine;不要用 init() 做复杂初始化;mutex 更简单时不要强行用 channel;导出 API 不要从接口返回具体类型。
限制:资料未提供安装命令、价格、平台支持、效果数据或具体使用入口,相关事实暂未提供。