golang-context 是帮助 Go 开发者正确传递取消信号、超时和请求元数据的 Skill。把一条请求经过的处理函数、服务和数据库调用交给 AI,它会检查 context 是否沿着同一条任务链传下去。
有一种浪费很隐蔽:用户已经取消请求,后面的工作还在继续。原文用数据库操作举例,调用途中重新创建 Background 上下文,会切断与原请求的关系。把参数里的 ctx 继续传给支持上下文的接口,才能让这些操作有机会响应取消和截止时间。
取消不是强制杀掉所有并发任务,相关代码仍要观察信号。创建带超时或取消能力的子上下文后,也要确保适当调用 cancel,释放相应资源;把 ctx 长期存在结构体里,则可能让下一次请求用到已经取消的状态。
如果某项后台工作确实需要比请求活得更久,文档单独指出 Go 1.21+ 的 WithoutCancel 路线,不能把所有后台工作都随意换成一个新上下文。
适合排查请求超时失效、取消不传递等问题。它让 AI 检查整条生命周期,普通函数只是把 ctx 放在第一个参数,并不等于这些行为已经正确。