AI 工程师们忽视的 Go 约定
Hacker News2026年10月20日 16:59
那些只有在你受到了伤害后才会有所领悟的约定 8 分钟阅读 2 天前 -- 我花了三年时间为推理网关编写 Go 代码,直到我意识到我一直在与语言作斗争,而不是在使用它。我会写一个处理程序,发布它,然后六个月后有人指出我错误地使用了上下文,或者我的错误包装泄漏,或者我的 goroutine 会让 pod 崩溃。每次我都会想:为何没有人告诉我这些问题?这些不是你在教程中能学到的规则。它们是只有在你感受到其缺失的痛苦后才会明白的约定。以下是让我受到最多冲击的十条。按下回车或点击查看完整图片 1. context 不是请求包——它是取消合同 每个人的第一反应都是把值放入 context.WithValue。我这样做了两年。然后一个超时通过我的网关传播,造成了模型切换失败,因为这个值仍然存在。让我明白的约定是:上下文用于取消、截止日期和追踪,而不是用于传递处理程序所需的数据。 // 错误:将用户 ID 放入上下文 func handler(ctx context.Context) { userID, _ := ctx.Value("user_id").(string) } // 正确…
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡