Podstawy zakresu funkcji
Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 58 z 109.
W Go zmienne zadeklarowane wewnątrz funkcji są dostępne tylko w obrębie tej funkcji. Nazywa się to zakresem funkcji.
Utwórz funkcję ze zmienną lokalną:
func calculateTotal(price int, quantity int) int {
tax := 0.1 * float64(price * quantity) // zmienna lokalna
total := price * quantity + int(tax)
return total
}
func main() {
result := calculateTotal(10, 2)
fmt.Println("Total:", result)
// fmt.Println(tax) // Błąd: tax nie jest tutaj dostępna
}Wynik pokazuje tylko zwróconą wartość:
Total: 22Zmienna tax istnieje tylko wewnątrz funkcji calculateTotal i nie można uzyskać do niej dostępu z main.
Wyzwanie
PoczątkującyW tym wyzwaniu poćwiczysz rozumienie zakresu funkcji w Go. Musisz naprawić prosty program, w którym występuje problem z zakresem.
Program ma zmienną globalną message i funkcję, która próbuje ją zmodyfikować. Twoim zadaniem jest naprawić kod, aby funkcja prawidłowo aktualizowała zmienną globalną.
Spróbuj swoich sił
package main
import "fmt"
// Zmienna globalna
var message string = "Hello from global scope"
func updateMessage() {
// To tworzy nową zmienną lokalną zamiast modyfikować zmienną globalną
message := "Hello from function scope"
fmt.Println("Inside function:", message)
}
func main() {
fmt.Println("Before function call:", message)
updateMessage()
// TODO: Globalna zmienna message nadal ma pierwotną wartość
// Zmodyfikuj funkcję updateMessage(), aby zmieniała zmienną globalną
fmt.Println("After function call:", message)
}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