Menu
Coddy logo textTech

Verwendung von Zeigern in Funktionen

Teil des Abschnitts Grundlagen der GO-Journey von Coddy — Lektion 64 von 109.

Funktionen können Variablen über Pointer entgegennehmen und ändern. Dies ermöglicht es Funktionen, den ursprünglichen Wert zu ändern und nicht nur eine Kopie.

Erstellen Sie eine Funktion, die einen Wert über einen Pointer modifiziert:

func main() {
    number := 10
    fmt.Println("Before:", number)
    
    // Übergeben Sie die Adresse von number
    doubleValue(&number)
    
    fmt.Println("After:", number)
}

func doubleValue(num *int) {
    // Modifizieren Sie den Wert an der Adresse des Pointers
    *num = *num * 2
}

Die Ausgabe zeigt den durch die Funktion geänderten Wert:

Before: 10
After: 20

Wenn wir &number übergeben, erhält die Funktion einen Pointer und kann die ursprüngliche Variable ändern.

challenge icon

Aufgabe

Anfänger

In dieser Challenge üben Sie die Verwendung von Pointern in Funktionen. Sie müssen eine Funktion vervollständigen, die einen Pointer auf einen String entgegennimmt und den String-Wert in Großbuchstaben umwandelt.

Die Funktion makeUppercase ist bereits für Sie definiert. Ihre Aufgabe ist es, den String, auf den der Pointer zeigt, mithilfe der Funktion strings.ToUpper() zu ändern.

Spickzettel

Funktionen können Variablen über Pointer ändern, indem sie die Speicheradresse anstelle einer Kopie erhalten:

func main() {
    number := 10
    
    // Übergabe der Adresse von number mit &
    doubleValue(&number)
    
    fmt.Println(number) // Ausgabe: 20
}

func doubleValue(num *int) {
    // Ändere den Wert an der Adresse des Pointers mit *
    *num = *num * 2
}

Wichtige Pointer-Syntax:

  • &variable - ruft die Adresse einer Variablen ab
  • *pointer - dereferenziert einen Pointer, um auf den Wert zuzugreifen oder ihn zu ändern
  • *type - deklariert einen Pointer-Parametertyp

Probier es selbst

package main

import (
	"fmt"
	"strings"
)

// makeUppercase nimmt einen Zeiger auf einen String entgegen und wandelt den String in Großbuchstaben um
func makeUppercase(strPtr *string) {
	// TODO: Verwenden Sie strings.ToUpper(), um den String zu ändern, auf den strPtr zeigt
	// Hinweis: Sie müssen den Zeiger dereferenzieren, um auf den String-Wert zuzugreifen
	? = strings.ToUpper(?)
	
}

func main() {
	// Wir haben bereits eine String-Variable
	message := "hello, world"
	
	// Die ursprüngliche Nachricht ausgeben
	fmt.Printf("Original message: %s\n", message)
	
	// makeUppercase mit der Adresse von message aufrufen
	makeUppercase(&message)
	
	// Die geänderte Nachricht ausgeben
	fmt.Printf("Modified message: %s\n", message)
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen