Powtórzenie – obsługa problemów
Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 109 z 109.
Wyzwanie
ŁatwyPoćwiczmy obsługę błędów w Go na prostym programie do konwersji temperatury.
Twoim zadaniem jest zaimplementowanie funkcji, która konwertuje temperatury ze stopni Celsjusza na stopnie Fahrenheita, z prawidłową obsługą błędów.
Uzupełnij funkcję celsiusToFahrenheit, która:
- Konwertuje temperaturę w stopniach Celsjusza na stopnie Fahrenheita za pomocą wzoru: F = C × 9/5 + 32
- Zwraca błąd, jeśli temperatura jest niższa od zera absolutnego (-273.15°C)
Komunikat błędu musi być dokładnie taki: "Error: temperature below absolute zero"
Funkcja main zawiera przypadki testowe, które pozwalają zweryfikować Twoją implementację.
Spróbuj swoich sił
package main
import (
"errors"
"fmt"
)
// celsiusToFahrenheit przelicza stopnie Celsjusza na stopnie Fahrenheita
// Zwraca błąd, jeśli temperatura jest niższa od zera bezwzględnego (-273.15°C)
func celsiusToFahrenheit(celsius float64) (float64, error) {
// TODO: Zaimplementuj logikę przeliczania
// 1. Sprawdź, czy temperatura jest niższa od zera bezwzględnego (-273.15°C)
// 2. Jeśli temperatura jest prawidłowa, przelicz ją według wzoru: F = C × 9/5 + 32
// 3. Zwróć odpowiednią wartość i błąd
return 0, nil
}
func main() {
// Przetestuj prawidłową temperaturę
fmt.Println("Converting 25°C to Fahrenheit:")
fahrenheit, err := celsiusToFahrenheit(25)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("25°C = %.2f°F\n", fahrenheit)
}
// Przetestuj inną prawidłową temperaturę
fmt.Println("\nConverting 0°C to Fahrenheit:")
fahrenheit, err = celsiusToFahrenheit(0)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("0°C = %.2f°F\n", fahrenheit)
}
// Przetestuj nieprawidłową temperaturę (niższą od zera bezwzględnego)
fmt.Println("\nConverting -300°C to Fahrenheit:")
fahrenheit, err = celsiusToFahrenheit(-300)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("-300°C = %.2f°F\n", fahrenheit)
}
}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