Eksik İptal Bağlamı (ARCH5024)
Anahtar go.async.missing-context-param · Önem warning · Kategori async
Genel veya uzun süren işlemler, çağrının iptal edilebilmesi için bir context.Context parametresi almalı ve onu alt çağrılara yaymalıdır. Aksi halde istemci bağlantısı koptuğunda iş boşuna devam eder.
Hatalı
Bölüm başlığı “Hatalı”func FetchUser(id string) (*User, error) { resp, err := http.Get("https://api.example.com/users/" + id) if err != nil { return nil, err } defer resp.Body.Close() return decodeUser(resp.Body)}func FetchUser(ctx context.Context, id string) (*User, error) { req, _ := http.NewRequestWithContext(ctx, http.MethodGet, "https://api.example.com/users/"+id, nil) resp, err := http.DefaultClient.Do(req) if err != nil { return nil, err } defer resp.Body.Close() return decodeUser(resp.Body)}Düzeltme
Bölüm başlığı “Düzeltme”İlk parametre olarak ctx context.Context ekleyin ve alt çağrılara yayın.