Heim >Backend-Entwicklung >Golang >Wie berechnet man Verbindungsfehler in Go 1.20?
PHP-Editor Apple bietet Ihnen eine Einführung in die Berechnung von Verbindungsfehlern in der Version Go 1.20. In der neuen Version bietet die Go-Sprache eine präzisere Methode zur Berechnung von Verbindungsfehlern, mit der Netzwerkverbindungsanomalien besser überwacht und behandelt werden können. Durch die genaue Berechnung von Verbindungsfehlern können Entwickler Netzwerkverbindungsprobleme schneller lokalisieren und lösen und so die Stabilität und Leistung des Programms verbessern. In diesem Artikel werden das Prinzip und die Verwendung der Verbindungsfehlerberechnung in der Version Go 1.20 ausführlich vorgestellt, um Entwicklern dabei zu helfen, besser mit Netzwerkverbindungsanomalien umzugehen.
So wie ich es verstehe, ist errors.Join()
ein sofort einsatzbereiter Ersatz für Multi-Fehler-Sammeltypen wie hashcorp/multierror , der parallel auftretende Fehler sammelt. Dieses Problem behebt keine allgemeinen Fehler beim Einwickeln/Entfalten.
Als ich den Produktionscode ersetzt habe, schlugen einige Tests fehl, als versucht wurde, Verbindungsfehler zu berechnen. Für die Bewältigung des Business Case sind sowohl die Anzahl als auch die Art der Fehler wichtig. Dies funktioniert für Hashcorp/Multierror, da eine bestimmte Zeichenfolge generiert wird, z. B. 3 错误发生
.
package main import "errors" func doSomething() error { var multierror error err1 := errors.New("Hello") multierror = errors.Join(err1, err1) err2 := errors.New("World") multierror = errors.Join(err2, err1) return multierror } // somewhere else func test_doSomething(t *testing.T) { actual := doSomething() assert.Len(t, 2, len(actual)????) // help }
Wie zähle ich die Anzahl der Fehler nach der Verwendung von errors.Join()
?
Ich finde keine Möglichkeit, die Art des Fehler-Slice innerhalb des Verbindungsfehlers zu überprüfen, und es ist unmöglich, das Fehler-Slice selbst zu überprüfen, da es privat ist.
Die Verwendung von errors.Unwrap(err)
könnte eine Möglichkeit sein, obwohl ich nur einen Fehler oder nil
(wenn es der letzte ist) erhalte. Mit Ausnahme von errors.As/.Is
, mit dem wir Zählfehler nicht ganz lösen können. errors.Unwrap(err)
可能是一种方法,尽管我得到的只是一个错误或 nil
(如果它是最后一个)。除了 errors.As/.Is
之外,它并不完全让我们解决计数错误。
errors.Join()
Lösung
errors.Join()
返回的 error
将有一个 Unwrap() []error
Datensatz:
der zurückgegebene error
wird eine Unwrap() []error
-Methode haben.
Enthält den Schnittstellentyp dieser Methode. Sie können sie aufrufen und sie gibt den verbundenen Slice-Fehler zurück: Zum Beispiel:
err1 := errors.New("err1") err2 := errors.New("err2") err := errors.Join(err1, err2) if uw, ok := err.(interface{ Unwrap() []error }); ok { errs := uw.Unwrap() fmt.Println("Number of joined errors:", len(errs)) }🎜Dies wird ausgegeben (versuchen Sie es auf 🎜Go Playground🎜): 🎜
Number of joined errors: 2
Das obige ist der detaillierte Inhalt vonWie berechnet man Verbindungsfehler in Go 1.20?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!