Einfache Fehler erstellen
Teil des Abschnitts Grundlagen der GO-Journey von Coddy — Lektion 106 von 109.
In Go können Sie benutzerdefinierte Fehler mit der errors.New() Funktion aus der Standardbibliothek erstellen.
Importieren Sie das errors-Paket:
import (
"errors"
"fmt"
)Erstellen Sie einen einfachen Fehler mit einer Fehlermeldung:
func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("cannot divide by zero")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}Die Ausgabe lautet:
Error: cannot divide by zeroAufgabe
AnfängerIn dieser Challenge üben Sie das Erstellen eines einfachen Fehlers in Go mit der Funktion errors.New().
Sie haben eine Funktion, die prüft, ob ein Benutzername gültig ist. Ein Benutzername gilt als gültig, wenn er mindestens 5 Zeichen lang ist. Ihre Aufgabe ist es, die Funktion zu vervollständigen, indem Sie einen entsprechenden Fehler zurückgeben, wenn der Benutzername zu kurz ist.
Spickzettel
Erstellen Sie benutzerdefinierte Fehler mit errors.New() aus der Standardbibliothek:
import (
"errors"
"fmt"
)Geben Sie einen Fehler aus einer Funktion zurück:
func divide(a, b int) (int, error) {
if b == 0 {
return 0, errors.New("cannot divide by zero")
}
return a / b, nil
}Behandeln Sie den Fehler:
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}Probier es selbst
package main
import (
"errors"
"fmt"
)
func main() {
// Test mit einem gültigen Benutzernamen
result, err := validateUsername("gopher123")
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println(result)
}
// Test mit einem ungültigen Benutzernamen
result, err = validateUsername("go")
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println(result)
}
}
func validateUsername(username string) (string, error) {
if len(username) < 5 {
// TODO: Gib einen Fehler mit der Nachricht "username must be at least 5 characters long" zurück
// Hinweis: Verwende errors.New(), um einen neuen Fehler zu erstellen
return "", nil // Ersetze diese Zeile
}
return "Username is valid", nil
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Vergleichs- & logische Operatoren
Vergleichsoperatoren - Teil 1Vergleichsoperatoren - Teil 2Logischer UND-OperatorLogischer ODER-OperatorLogischer NICHT-OperatorGrundlagen der OperatorrangfolgeZusammenfassung - Vergleiche anstellen7Kontrollfluss: Schleifen
Die `for`-Schleife erklärtfor-Schleife - Grundlagenfor-Schleife - Nur BedingungDas `break`-SchlüsselwortDas `continue`-SchlüsselwortVerschachtelte SchleifenZusammenfassung - Aktionen wiederholen2Variablen und grundlegende Datentypen
Was ist eine VariableTypinferenz mit `:=`Ganzzahlen (int)GleitkommazahlenBoolesche WerteStringsZero ValuesKonstantenNamenskonventionenZusammenfassung - Variablen und Typen5Grundlagen der Ein- und Ausgabe
Formatierte AusgabeFormat-VerbenTypen ausgebenEinfache Benutzereingaben erhaltenZusammenfassung – Ein- und Ausgabe8Funktionen
Funktionen verstehenEine Funktion deklarierenFunktionen aufrufenFunktionsparameterEinen einzelnen Wert zurückgebenMehrere Werte zurückgebenBenannte RückgabewerteGrundlagen des Funktions-ScopesZusammenfassung – Wiederverwendbaren Code erstellen11Zusammengesetzte Typen: Slices
Einführung in SlicesDeklaration von Slice-LiteralenSlices mit `make` erstellenSlice-Länge vs. KapazitätZugriff auf Slice-ElementeElemente anhängenSlicing von bestehenden Slices/ArraysIterieren über SlicesKopieren von SlicesZusammenfassung – Dynamische Listen14Grundlagen der Fehlerbehandlung
Das Konzept von FehlernDas `error`-InterfaceFunktionen, die Fehler zurückgebenFehler prüfenEinfache Fehler erstellenFormatierte Fehler erstellenGrundlagen der FehlerbehandlungZusammenfassung – Probleme behandeln3Grundlegende Operatoren
Arithmetische OperatorenDivisionsoperatorDer Modulo-OperatorZuweisungsoperatorKombinierte ZuweisungsoperatorenInkrement und DekrementZusammenfassung - Berechnungen6Kontrollfluss: Bedingte Anweisungen
Die `if`-AnweisungDas `else`-SchlüsselwortDas `else if`-SchlüsselwortVariable Shadowing in `if`Variablen initialisierenDie `switch`-AnweisungSwitch mit AusdrückenSwitch ohne AusdruckDas `fallthrough`-SchlüsselwortZusammenfassung – Entscheidungen treffen9Zeiger
Was ist ein Zeiger?Deklarieren von ZeigervariablenDer AdressoperatorDereferenzieren von ZeigernVerwendung von Zeigern in FunktionenNil-ZeigerZusammenfassung – Zeiger verstehen12Zusammengesetzte Typen: Maps
Einführung in MapsDeklarieren von Map-LiteralenErstellen von Maps mit `make`Hinzufügen und Aktualisieren von Key-Value-PaarenZugriff auf Map-WerteÜberprüfen der Existenz von SchlüsselnLöschen von Map-EinträgenMap-LängeIterieren über MapsZusammenfassung – Key-Value-Speicher