人都走了请求还跑?这款Skill查Go

Go context 用法,包括跨层传递和取消信号传播。

golang-context 是帮助 Go 开发者正确传递取消信号、超时和请求元数据的 Skill。把一条请求经过的处理函数、服务和数据库调用交给 AI,它会检查 context 是否沿着同一条任务链传下去。

有一种浪费很隐蔽:用户已经取消请求,后面的工作还在继续。原文用数据库操作举例,调用途中重新创建 Background 上下文,会切断与原请求的关系。把参数里的 ctx 继续传给支持上下文的接口,才能让这些操作有机会响应取消和截止时间。

取消不是强制杀掉所有并发任务,相关代码仍要观察信号。创建带超时或取消能力的子上下文后,也要确保适当调用 cancel,释放相应资源;把 ctx 长期存在结构体里,则可能让下一次请求用到已经取消的状态。

如果某项后台工作确实需要比请求活得更久,文档单独指出 Go 1.21+ 的 WithoutCancel 路线,不能把所有后台工作都随意换成一个新上下文。

适合排查请求超时失效、取消不传递等问题。它让 AI 检查整条生命周期,普通函数只是把 ctx 放在第一个参数,并不等于这些行为已经正确。

分类:编程开发

来源仓库:samber/cc-skills-golang

适合用来做什么

  • 如何在Golang中正确传递context.Context参数?
  • 如何避免context泄漏并确保其正确取消?

安装 golang-context

npx skills add https://www.iskills.cc/skills/samber/cc-skills-golang/golang-context/SKILL.md

在本机终端执行安装命令。安装前请阅读原始说明,确认所需工具、账号和权限。

查看安装步骤 · 查看常见问题

查看 golang-context 的用途与原始说明

浏览全部 Skill 指南