我有下面的代碼:如果我沒有把defer cancel()
在那裏如果我不取消上下文會發生什麼?
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)
}
會發生什麼? go vet
警告這
由context.WithTimeout返回的取消功能應該叫,不丟棄,以避免上下文邊跑邊
如何上下文被泄露,將這個有什麼樣的影響?謝謝