Menu
Coddy logo textTech

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: 20

Gdy przekazujemy &number, funkcja otrzymuje wskaźnik i może zmodyfikować oryginalną zmienną.

challenge icon

Wyzwanie

Początkujący

W 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)
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Go online