Wie berechnet man Verbindungsfehler in Go 1.20?

WBOY
Freigeben: 2024-02-11 18:57:08
nach vorne
905 Leute haben es durchsucht

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.

Frageninhalt

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
}
Nach dem Login kopieren

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:

Also

der zurückgegebene error wird eine Unwrap() []error-Methode haben.

Type Assertion

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))
}
Nach dem Login kopieren
🎜Dies wird ausgegeben (versuchen Sie es auf 🎜Go Playground🎜): 🎜
Number of joined errors: 2
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!