Zwracanie wielu wartości
Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 56 z 109.
Funkcje Go mogą zwracać wiele wartości naraz, co jest niezwykle przydatne, gdy chcesz zwracać zarówno wyniki, jak i informacje o błędach.
Utwórz funkcję, która zwraca zarówno iloraz, jak i resztę:
func divide(a, b int) (int, int) {
quotient := a / b
remainder := a % b
return quotient, remainder
}
func main() {
q, r := divide(7, 3)
fmt.Println("7 ÷ 3 =", q, "with remainder", r)
}Po uruchomieniu tego programu otrzymasz:
7 ÷ 3 = 2 with remainder 1Funkcja zwraca dwie wartości oddzielone przecinkami, a my przechwytujemy obie wartości za pomocą wielu zmiennych w przypisaniu.
Jeśli potrzebujesz tylko niektórych zwracanych wartości, możesz użyć pustego identyfikatora _, aby zignorować te, których nie potrzebujesz:
q, _ := divide(7, 3) // zignoruj resztę
fmt.Println("Quotient:", q)Użycie _ informuje Go, że ma odrzucić tę zwracaną wartość. Jest to wymagane, gdy nie używasz wartości, ponieważ Go nie zezwala na nieużywane zmienne.
Wyzwanie
PoczątkującyW tym wyzwaniu poćwiczysz zwracanie wielu wartości z funkcji w Go.
Mamy funkcję o nazwie getPersonInfo, która powinna zwracać imię i nazwisko, wiek oraz informację o tym, czy dana osoba jest studentem. Twoim zadaniem jest uzupełnienie funkcji przez dodanie odpowiedniej instrukcji return.
Spróbuj swoich sił
package main
import "fmt"
// Ta funkcja powinna zwracać trzy wartości: name, age i isStudent
func getPersonInfo() (string, int, bool) {
// Zmienne są już zdefiniowane
name := "Alex"
age := 25
isStudent := true
// TODO: Zwróć wszystkie trzy wartości (name, age, isStudent)
}
func main() {
// Wywołaj funkcję i zapisz zwrócone wartości
name, age, isStudent := getPersonInfo()
// Wypisz wartości
fmt.Printf("Name: %s\n", name)
fmt.Printf("Age: %d\n", age)
fmt.Printf("Is Student: %t\n", isStudent)
}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 dynamiczne3Podstawowe 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