Context est une bibliothèque standard du langage de programmation Go. Le contexte nous aide à gérer les annulations, les délais d'attente et à propager les données selon les besoins. Dans cet article, nous essaierons de comprendre le contexte et pourquoi nous devrions l'utiliser dans nos applications. À la fin de cet article, nous essaierons d'utiliser Contexte de manière simple.
Nous pouvons penser au Contexte comme à un feu de circulation. Par exemple, lorsque le feu est vert, c’est comme démarrer un Contexte. Le compte à rebours est similaire à l'utilisation d'un contexte avec un délai d'attente. Lorsque le feu passe au rouge, le Context envoie un signal terminé pour arrêter le trafic en cours.
Sur la base de l'analogie ci-dessus, nous pouvons conclure que le contexte a plusieurs rôles importants, qui sont :
Context dispose d'un système de gestion hiérarchique. Nous pouvons créer un contexte indépendamment ou créer un contexte en utilisant un autre contexte comme parent. Lorsque nous marquons un contexte comme terminé, toutes les instances de contexte en dessous (enfants) seront également terminées.
Voici un schéma simple illustrant la hiérarchie d'un contexte :
mathematica Copy code Root Context ├── Context A │ ├── Context A1 │ └── Context A2 └── Context B
Voici comment utiliser Contexte dans un exemple simple. Dans l'exemple ci-dessous, nous créons un contexte avec un délai d'attente afin que si le processus prend plus de temps que le délai d'attente spécifié, le contexte enverra un signal Terminé.
go Copy code package main import ( "context" "fmt" "time" ) func main() { // Create context with timeout ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() // Run function with context process(ctx) } func process(ctx context.Context) { select { case <-time.After(3 * time.Second): fmt.Println("Process completed") case <-ctx.Done(): fmt.Println("Process cancelled:", ctx.Err()) } }
Explication :
Ne pas fermer le contexte
Appelez toujours defer Cancel() après avoir créé un contexte. Ne pas le faire peut provoquer une fuite de mémoire car le contexte restera en mémoire.
Utiliser le contexte pour les données non pertinentes
N'utilisez pas Context comme substitut aux paramètres de fonction. Utilisez-le uniquement pour l'annulation, le délai d'attente ou les métadonnées.
Comprendre et utiliser correctement Context nous aidera à créer des applications Go plus efficaces. Grâce à sa capacité à gérer les annulations, les délais d'attente et la propagation des données, Context garde nos applications sous contrôle dans des situations complexes. En tant que développeurs, nous devons implémenter Context dans chaque application Go pour améliorer sa qualité et son évolutivité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!