Menu
Coddy logo textTech

Utiliser des pointeurs dans les fonctions

Fait partie de la section Fondamentaux du Journey GO de Coddy — leçon 64 sur 109.

Les fonctions peuvent accepter et modifier des variables via des pointeurs. Cela permet aux fonctions de modifier la valeur d'origine, et non seulement une copie.

Créez une fonction qui modifie une valeur via un pointeur :

func main() {
    number := 10
    fmt.Println("Before:", number)
    
    // Passez l'adresse de number
    doubleValue(&number)
    
    fmt.Println("After:", number)
}

func doubleValue(num *int) {
    // Modifiez la valeur à l'adresse du pointeur
    *num = *num * 2
}

La sortie affiche la valeur modifiée par la fonction :

Before: 10
After: 20

Lorsque nous passons &number, la fonction reçoit un pointeur et peut modifier la variable d'origine.

challenge icon

Défi

Débutant

Dans ce défi, vous allez vous entraîner à utiliser des pointeurs dans des fonctions. Vous devez compléter une fonction qui prend un pointeur vers une chaîne de caractères et modifie la valeur de la chaîne pour qu'elle soit en majuscules.

La fonction makeUppercase est déjà définie pour vous. Votre tâche consiste à modifier la chaîne vers laquelle pointe le pointeur en utilisant la fonction strings.ToUpper().

Aide-mémoire

Les fonctions peuvent modifier des variables via des pointeurs en recevant l'adresse mémoire au lieu d'une copie :

func main() {
    number := 10
    
    // Passer l'adresse de number en utilisant &
    doubleValue(&number)
    
    fmt.Println(number) // Résultat : 20
}

func doubleValue(num *int) {
    // Modifier la valeur à l'adresse du pointeur en utilisant *
    *num = *num * 2
}

Syntaxe clé des pointeurs :

  • &variable - obtient l'adresse d'une variable
  • *pointer - déréférence un pointeur pour accéder à/modifier la valeur
  • *type - déclare un type de paramètre de pointeur

Essayez vous-même

package main

import (
	"fmt"
	"strings"
)

// makeUppercase prend un pointeur vers une chaîne de caractères et transforme la chaîne en majuscules
func makeUppercase(strPtr *string) {
	// TODO : Utilisez strings.ToUpper() pour modifier la chaîne vers laquelle pointe strPtr
	// Astuce : Vous devez déréférencer le pointeur pour accéder à la valeur de la chaîne
	? = strings.ToUpper(?)
	
}

func main() {
	// Nous avons déjà une variable de type chaîne
	message := "hello, world"
	
	// Affiche le message original
	fmt.Printf("Original message: %s\n", message)
	
	// Appelle makeUppercase avec l'adresse de message
	makeUppercase(&message)
	
	// Affiche le message modifié
	fmt.Printf("Modified message: %s\n", message)
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux