用途:指导在 Go 中惯用地使用 context.Context,用于跨 API 边界与 goroutine 传播取消信号、截止时间和请求作用域值,把同一工作单元的各操作串联起来。
主要能力:给出最佳实践清单——在整个请求生命周期传播同一 context(HTTP handler → service → DB → 外部 API);ctx 作为首参数并命名为 ctx context.Context;通过函数参数而非结构体传递 context;用 context.TODO() 而非 nil;在 WithCancel/WithTimeout/WithDeadline 的所有控制流路径调用 cancel();仅在 main、init、测试等顶层入口创建 context.Background();用未导出类型声明 context 值键;context 值只放请求作用域元数据;用 context.WithoutCancel(Go 1.21+)处理需超出父请求的后台工作。还给出创建 context 的场景对照(入口用 Background、暂无 context 用 TODO、HTTP handler 用 r.Context()、需取消用 WithCancel、需超时用 WithTimeout)。
使用方式:按资料中的正反例传播 context,例如服务方法应把调用方的 ctx 传给 db.ExecContext,而非新建 context.Background()。深入主题包括取消/超时/截止时间、context 值与跨服务追踪、HTTP 服务与调用中的 context。可用 govet、staticcheck 等 linter 自动发现常见陷阱。
适用场景:Go 服务的请求处理、数据库操作、外部 API 调用、并发代码与可观测性追踪。
限制:资料未提供具体安装命令、版本要求细节或收费信息;部分内容为交叉引用其他技能,未展开完整实现。