Używanie wskaźników w funkcjach
Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 64 z 109.
Funkcje mogą przyjmować i modyfikować zmienne za pomocą . Dzięki temu funkcje mogą zmieniać oryginalną wartość, a nie tylko jej kopię.
Utwórz funkcję, która modyfikuje wartość za pomocą wskaźnika:
func main() {
number := 10
fmt.Println("Before:", number)
// Przekaż adres number
doubleValue(&number)
fmt.Println("After:", number)
}
func doubleValue(num *int) {
// Zmień wartość pod adresem wskazywanym przez wskaźnik
*num = *num * 2
}Wynik pokazuje wartość zmienioną przez funkcję:
Before: 10
After: 20Gdy przekazujemy &number, funkcja otrzymuje wskaźnik i może zmodyfikować oryginalną zmienną.
Wyzwanie
PoczątkującyW tym wyzwaniu przećwiczysz używanie wskaźników w funkcjach. Musisz uzupełnić funkcję, która przyjmuje wskaźnik do ciągu znaków i zmienia wartość tego ciągu na wielkie litery.
Funkcja makeUppercase jest już zdefiniowana. Twoim zadaniem jest zmodyfikowanie ciągu znaków, na który wskazuje wskaźnik, za pomocą funkcji strings.ToUpper().
Spróbuj swoich sił
package main
import (
"fmt"
"strings"
)
// makeUppercase przyjmuje wskaźnik do ciągu znaków i zamienia ten ciąg na wielkie litery
func makeUppercase(strPtr *string) {
// TODO: Użyj strings.ToUpper(), aby zmienić ciąg znaków, na który wskazuje strPtr
// Wskazówka: Musisz wyłuskać wskaźnik, aby uzyskać dostęp do wartości ciągu znaków
? = strings.ToUpper(?)
}
func main() {
// Mamy już zmienną typu string
message := "hello, world"
// Wypisz oryginalną wiadomość
fmt.Printf("Original message: %s\n", message)
// Wywołaj makeUppercase, przekazując adres zmiennej message
makeUppercase(&message)
// Wypisz zmodyfikowaną wiadomość
fmt.Printf("Modified message: %s\n", 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 decyzji9Wskaźniki
Czym jest wskaźnik?Deklarowanie zmiennych wskaźnikowychOperator pobrania adresuDereferencja wskaźnikówUżywanie wskaźników w funkcjachWskaźniki nilPowtórzenie — zrozumienie wskaźnikówPoćwicz samodzielnie: Kompilator Go online