Gestion des erreurs dans les goroutines via les canaux
Lors de l'appel de fonctions dans les goroutines, il est souvent nécessaire de gérer et de propager les erreurs. Dans Go, les fonctions renvoient classiquement à la fois une valeur et une erreur, comme le montre l'exemple :
func createHashedPassword(password string) (string, error) { // code }
Pour exécuter createHashedPassword dans une goroutine et faciliter la gestion des erreurs, une approche courante consiste à utiliser des canaux. Les canaux permettent une communication bidirectionnelle, permettant l'envoi et la réception de données.
Pour gérer les erreurs à l'aide de canaux, une structure personnalisée peut être définie pour encapsuler à la fois le résultat et l'erreur :
type Result struct { Message string Error error } ch := make(chan Result)
Dans la goroutine, la structure Result peut être remplie et envoyée sur le canal :
go func() { msg, err := createHashedPassword(password) result := Result{Message: msg, Error: err} ch <- result }()
Dans le programme principal, le résultat peut être récupéré à partir du canal et l'erreur peut être vérifiée :
result := <-ch if result.Error != nil { // Error occurred }
En utilisant cette technique, les erreurs peuvent être gérées efficacement au sein des goroutines, permettant la propagation et la gestion des erreurs sans compromettre la simultanéité.
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!