𝗚𝗼 𝗖𝗼𝗻𝘁𝗲𝘅𝘁 𝗣𝗮𝗰𝗸𝗮𝗴𝗲

La maggior parte degli sviluppatori Go utilizza context.Context senza comprenderlo appieno. Lo trovi negli handler HTTP, nelle chiamate al database e nei metodi SDK. Molti principianti passano context.Background() ovunque.

Questo errore causa problemi. Una funzione Lambda potrebbe rimanere appesa oltre il proprio timeout. Una query al database potrebbe continuare a girare dopo che un utente si è disconnesso.

Il Context ti permette di inviare segnali di cancellazione e scadenze (deadlines) attraverso il tuo codice. Ti aiuta a rispondere a tre domande:

• Questa operazione deve continuare a girare? • Quando deve terminare questa operazione? • Quali dati della richiesta scorrono con questa chiamata?

L'interfaccia Context ha quattro metodi:

Il Context funziona come un albero. Si parte da un context genitore e si creano dei figli.

Context Radice:

Context Figli:

Regola Cruciale: Chiama sempre la funzione cancel. Usa defer cancel() immediatamente dopo aver creato un context figlio. Se ometti questo passaggio, creerai memory leak.

Best Practice:

Quando un context genitore viene cancellato, tutti i suoi figli vengono cancellati automaticamente. Questo rende facile interrompere un'intera catena di operazioni in tutto il sistema.

Fonte: https://dev.to/ferztyle/go-context-package-37nk