In Gos Dokumentation zur effektiven Fehlerbehandlung (https://golang.org/doc/ Effective_go.html #errors) sind Sie möglicherweise auf das Code-Snippet gestoßen:
<code class="go">for try := 0; try < 2; try++ { file, err = os.Create(filename) if err == nil { return } if e, ok := err.(*os.PathError); ok && e.Err == syscall.ENOSPC { deleteTempFiles() // Recover some space. continue } return }</code>
Dieser Code demonstriert die Verwendung von err.(*os.PathError). Schauen wir uns genauer an, was es bedeutet.
Wenn os.Create aufgerufen wird, gibt es einen Fehler als zweiten Rückgabewert zurück. Dieser Fehler implementiert die Fehlerschnittstelle { Error() string }. Jeder Datentyp, der über eine Error-Methode verfügt, kann diese Schnittstelle implementieren und ihr zugewiesen werden.
Normalerweise reicht die einfache Ausgabe der Fehlermeldung aus. Im gegebenen Beispiel zielt das Programm jedoch darauf ab, den ENOSPC-Fehler (kein Platz auf dem Gerät übrig) gezielt zu behandeln. Das Betriebssystempaket stellt in solchen Fällen einen *os.PathError als Fehlerimplementierung bereit. Wenn Sie auf weitere Informationen zum Fehler zugreifen müssen, können Sie ihn umwandeln.
Die Anweisung e, ok : = err.(os.PathError) verwendet Typzusicherung. Es überprüft, ob der Schnittstellenwert err einen os.PathError als konkreten Typ enthält, und wenn ja, gibt es diesen Wert zurück. Wenn ein anderer Typ in der Schnittstelle vorhanden ist (andere Typen können auch die Fehlerschnittstelle implementieren), wird einfach der Wert Null und falsch zurückgegeben (in diesem Fall Null, falsch).
Das obige ist der detaillierte Inhalt vonWann und warum wird „err.(*os.PathError)' in Go verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!