Tworzenie błędów z formatowaniem
Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 107 z 109.
Tworzenie sformatowanych błędów... pozwala uwzględniać wartości dynamiczne w komunikatach o błędach.
Funkcja fmt.Errorf() tworzy błędy z użyciem sformatowanych ciągów znaków, podobnie jak fmt.Printf():
import (
"fmt"
)
func divide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("cannot divide %d by zero", a)
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}Wynik będzie następujący:
Error: cannot divide 10 by zeroWyzwanie
PoczątkującyW tym wyzwaniu poćwiczysz tworzenie sformatowanych komunikatów o błędach za pomocą funkcji fmt.Errorf. Masz program, który sprawdza nazwę użytkownika, i musisz utworzyć odpowiedni komunikat o błędzie, gdy nazwa użytkownika jest nieprawidłowa.
Program ma z góry ustaloną nazwę użytkownika, która jest zbyt krótka (mniej niż 5 znaków). Twoim zadaniem jest utworzenie sformatowanego komunikatu o błędzie, który zawiera nieprawidłową nazwę użytkownika i minimalną wymaganą długość.
Spróbuj swoich sił
package main
import (
"fmt"
)
func main() {
// Wstępnie zdefiniowana nazwa użytkownika, która jest zbyt krótka
username := "bob"
// Minimalna wymagana długość
minLength := 5
// Sprawdź, czy nazwa użytkownika jest prawidłowa
if len(username) < minLength {
// TODO: Utwórz sformatowany błąd za pomocą fmt.Errorf, który zawiera:
// 1. Nieprawidłową nazwę użytkownika
// 2. Minimalną wymaganą długość
// Przykładowy format: "invalid username: [username] is too short, minimum length is [minLength]"
err := // Twój kod tutaj
// Wyświetl błąd
fmt.Println(err)
} else {
fmt.Println("Username is valid!")
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory porównania i logiczne
Operatory porównania – część 1Operatory porównania – część 2Logiczny operator ANDLogiczny operator ORLogiczny operator NOTPodstawy kolejności wykonywania operatorówPodsumowanie – porównywanie7Sterowanie przepływem: pętle
Jak działa pętla `for`Pętla `for` — podstawyPętla `for` — tylko warunekSłowo kluczowe `break`Słowo kluczowe `continue`Pętle zagnieżdżonePodsumowanie — powtarzanie działań2Zmienne i podstawowe typy danych
Czym jest zmiennaWnioskowanie o typie za pomocą `:=`Liczby całkowite (int)Liczby zmiennoprzecinkoweWartości logiczneCiągi znakówWartości zeroweStałeKonwencje nazewnictwaPodsumowanie – zmienne i typy5Podstawowe wejście/wyjście
Formatowane wyjścieSpecyfikatory formatuWyświetlanie typówPobieranie podstawowych danych od użytkownikaPodsumowanie — wejście i wyjście8Funkcje
Zrozumienie funkcjiDeklarowanie funkcjiWywoływanie funkcjiParametry funkcjiZwracanie jednej wartościZwracanie wielu wartościNazwane wartości zwracanePodstawy zakresu funkcjiPodsumowanie — tworzenie wielokrotnego użytku kodu11Typy złożone: wycinki
Wprowadzenie do wycinkówDeklarowanie literałów wycinkówTworzenie wycinków za pomocą `make`Długość a pojemność wycinkaDostęp do elementów wycinkaDodawanie elementówWycinanie z istniejących wycinków i tablicIterowanie po wycinkachKopiowanie wycinkówPodsumowanie — listy dynamiczne14Podstawowa obsługa błędów
Pojęcie błędówInterfejs `error`Funkcje zwracające błędySprawdzanie błędówTworzenie prostych błędówTworzenie błędów z formatowaniemPodstawowa obsługa błędówPowtórzenie – obsługa problemów3Podstawowe operatory
Operatory arytmetyczneOperator dzieleniaOperator moduloOperator przypisaniaOperatory przypisania z działaniemZwiększanie i zmniejszaniePowtórka – obliczenia6Sterowanie przepływem: instrukcje warunkowe
Instrukcja `if`Słowo kluczowe `else`Słowo kluczowe `else if`Przesłanianie zmiennych w `if`Inicjalizacja zmiennychInstrukcja `switch``switch` z wyrażeniami`switch` bez wyrażeniaSłowo kluczowe `fallthrough`Podsumowanie — podejmowanie decyzjiPoćwicz samodzielnie: Kompilator Go online