Il contesto è così utile che molte biblioteche nell'ecosistema Go le usano. Li troverai anche in applicazioni che interagiscono con server remoti, database, chiamate API e altro ancora.
Per questo articolo, forniremo un'introduzione per principianti al pacchetto contesto in Go e come utilizzare il contesto per vari casi d'uso.
Contesto con il valore
Uno dei principali casi d'uso di contesti in GO è la condivisione dei dati o l'utilizzo di valori con accoppiamento. Il pacchetto contesto di Golang fornisce la funzione WithValue che consente di condividere i dati.
La sintassi della funzione è come mostrata:
func withValue (contesto genitore, chiave, interfaccia val ) contesto
La funzione prende un contesto, una chiave e un valore come parametri. La funzione creerà quindi un nuovo contesto in base al genitore fornito e aggiungerà un valore specificato al tasto SET.
Pensalo come un contesto interno con un tipo di coppia di valore chiave all'interno. È quindi possibile recuperare o recuperare i valori dal tipo.
Considera l'esempio seguente che illustra come utilizzare la funzione WithValue e recuperare i valori da essa.
Pacchetto principaleConcentrati sulla funzione principale del codice sopra. Iniziamo creando un nuovo oggetto contesto, CTX, con il contesto.Funzione di sfondo ().
La funzione di sfondo restituirà quindi un contesto vuoto non NIL senza cancellazioni, nessun valori e nessuna scadenza.
La funzione di fondo funge da inizializzazione per le richieste di contesto in arrivo.
Valori di set di contesto
La seconda parte della funzione è la funzione AddValues (). Prendiamo un nuovo contesto e lo legiamo a un contesto esistente in questo esempio. Il nuovo contesto contiene la chiave da aggiungere al contesto.
Si noti che la funzione WithValue restituisce una copia del contesto genitore e non modifica il contesto esistente.
Contesto recuperare i valori
La seconda parte del programma è la funzione RetrieveValue (). In questo caso, prendiamo la struttura di contesto e recuperiamo i valori associati alla chiave specificata.
Se la chiave esiste nel contesto, la funzione dovrebbe restituire il valore associato.
Se la chiave non esiste, la funzione dovrebbe restituire zero. Possiamo implementare la logica condizionale per verificare se il valore di restituzione è nullo e restituire un errore se vero.
Contesto con timeout
Un altro caso d'uso comune di contesti è la gestione dei timeout. Ad esempio, potrebbe essere necessario definire un timeout in determinate applicazioni se non viene eseguita un'azione specificata. Questo è incredibilmente semplice da implementare utilizzando la funzione withTimeout dal pacchetto di contesto. Diamo un'occhiata a come possiamo implementare il timeout usando il pacchetto di contesto.
Pacchetto principaleIn questo esempio, definiamo una funzione di annullamento utilizzando il contesto.Funzione contimeout. Possiamo quindi attivare manualmente la funzione di annulla.
Una volta raggiunto il valore di timeout, viene chiamata la funzione di annullamento ed esegue la logica specificata.
Nella nostra funzione di recupero del valore, recuperiamo continuamente il valore con la chiave specificata utilizzando il loop. Controlliamo anche se il canale fatto dal contesto principale è ancora vivo. Se il timeout non è stato superato, il contesto genitore sarà comunque aperto, ma una volta raggiunto il timeout, il contesto viene annullato.
Nel nostro esempio, la funzione verrà eseguita ogni 1 secondo prima che venga raggiunto il timeout. Un output di esempio è come mostrato:
valoreConclusione
Questo è stato un tutorial breve e fondamentale che discuteva dei contesti e come usarli nei programmi Go Go. Puoi controllare la documentazione per esplorare di più sui contesti GO.