Maison > développement back-end > Golang > le corps du texte

Comment gérer les erreurs des Goroutines via les canaux dans Go ?

Patricia Arquette
Libérer: 2024-11-13 01:01:01
original
135 Les gens l'ont consulté

How to Handle Errors from Goroutines via Channels in Go?

Gestion des erreurs des Goroutines via les canaux

Dans Go, les fonctions renvoient généralement une valeur et une erreur pour indiquer le résultat d'une opération. Cependant, lors de l'exécution de telles fonctions au sein de goroutines et de la communication des résultats via des canaux, la gestion efficace des erreurs devient cruciale.

Pour résoudre ce problème, une approche courante consiste à encapsuler à la fois la valeur et l'erreur dans une structure personnalisée. Cette structure est ensuite transmise via le canal, permettant à l'appelant de récupérer à la fois le résultat et toute erreur potentielle.

Considérez l'extrait de code suivant :

type Result struct {
    Message string
    Error error
}

ch := make(chan Result)
Copier après la connexion

Dans cet exemple, la structure Result contient à la fois le message (une chaîne) et l'erreur. Un canal ch est créé pour transmettre cette structure entre la goroutine et l'appelant.

Lors de l'appel de la fonction createHashedPassword dans une goroutine, le résultat peut être envoyé sur le canal ch en utilisant la syntaxe suivante :

go func() {
  result, err := createHashedPassword(password)
  
  //If error occurred send error
  if err != nil {
      errorResult := Result{Err:err}
      ch <- errorResult
         
  }    
}() 
Copier après la connexion

À l'extrémité réceptrice du canal, l'appelant peut récupérer la structure de résultat et gérer à la fois le message et les erreurs potentielles :

result := <-ch
if result.Error != nil {
  // Handle error
} else {
  // Use result.Message
}
Copier après la connexion

En utilisant cette technique, il devient possible de gérer les erreurs de manière transparente. généré au sein des goroutines tout en conservant un mécanisme de communication propre et efficace basé sur les canaux.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal