Umgang mit Fehlern in Goroutinen mit Kanälen
In Go geben Funktionen häufig einen Wert und einen Fehler zurück, sodass Sie potenzielle Fehler in Ihrem Programm behandeln können Code. Wenn man eine Funktion in einer Goroutine ausführt und Daten über Kanäle weitergibt, stellt sich die Frage, wie Fehler effektiv behandelt werden können.
Ein gängiger Ansatz besteht darin, eine benutzerdefinierte Struktur zu erstellen, um die Ergebnisse zu bündeln. Diese Struktur kann sowohl ein Nachrichten- als auch ein Fehlerfeld enthalten, sodass Sie beide Informationen über einen einzigen Kanal zurückgeben können.
type Result struct { Message string Error error } ch := make(chan Result)
In Ihrer Goroutine können Sie eine Ergebnisstruktur mit der entsprechenden Nachricht und dem entsprechenden Fehler erstellen Werte. Senden Sie dann die Struktur über den Kanal.
func createHashedPasswordAsync(password string, ch chan Result) { // Code to create hashed password result := Result{ Message: "Hash created", } if err != nil { result.Error = err } ch <- result }
In der Haupt-Goroutine können Sie die Ergebnisstruktur empfangen und die Nachricht und den Fehler entsprechend behandeln.
result := <-ch if result.Error != nil { // Handle error } else { // Do something with the message }
Durch die Verwendung einer benutzerdefinierten Funktion struct, um die Ergebnisse zu bündeln, können Sie Fehler in Goroutinen effektiv behandeln und sowohl die Nachricht als auch den Fehler über einen einzigen Kanal weiterleiten.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit Fehlern in Goroutinen mit Kanälen um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!