【发布时间】:2024-01-16 17:07:01
【问题描述】:
我有以下代码:
func Call(ctx context.Context, payload Payload) (Response, error) {
req, err := http.NewRequest(...) // Some code that creates request from payload
ctx, cancel = context.withTimeout(ctx, time.Duration(3) * time.Second)
defer cancel()
return http.DefaultClient.Do(req)
}
如果我没有在其中输入defer cancel() 会发生什么? go vet 发出警告
应该调用 context.WithTimeout 返回的取消函数,而不是丢弃,以避免上下文泄漏
上下文将如何泄露,这将产生什么影响?谢谢
【问题讨论】:
标签: go