Transmission d'erreurs dans les Goroutines à l'aide de canaux
Dans Go, les fonctions renvoient généralement une valeur et une erreur facultative, comme démontré dans la fonction createHashedPassword fournie . Lors de l'exécution de cette fonction dans une goroutine, une approche courante consiste à communiquer les résultats via un canal. Cependant, la gestion des erreurs dans cette configuration nécessite une attention particulière.
Pour gérer efficacement les erreurs dans les goroutines, il est recommandé d'encapsuler les valeurs de sortie, y compris les erreurs potentielles, dans une structure personnalisée. En transmettant cette structure sur un seul canal, vous pouvez renvoyer à la fois le résultat et toutes les erreurs associées sans effort.
Par exemple, vous pouvez créer une structure de résultat avec deux champs : Message pour la sortie attendue et Erreur pour toute erreur rencontrée. erreurs :
type Result struct { Message string Error error }
Ensuite, initialisez un canal spécifiquement pour transmettre les structures de résultat :
ch := make(chan Result)
Maintenant, dans votre goroutine, exécutez la fonction createHashedPassword et attribuez le résultat à une variable de résultat :
go func() { result := Result{ Message: createHashedPassword(), Error: err, // Any potential error encountered during execution } ch <- result }()
Côté réception, vous pouvez récupérer le résultat et vérifier les erreurs :
select { case result := <-ch: if result.Error != nil { // Handle the error } // Do something with result.Message }
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!