Menu
Coddy logo textTech

Bases de la portée des fonctions

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

En Go, les variables déclarées à l'intérieur d'une fonction ne sont accessibles qu'au sein de cette fonction. C'est ce qu'on appelle la portée de fonction (function scope).

Créez une fonction avec une variable locale :

func calculateTotal(price int, quantity int) int {
    tax := 0.1 * float64(price * quantity)  // variable locale
    total := price * quantity + int(tax)
    return total
}

func main() {
    result := calculateTotal(10, 2)
    fmt.Println("Total:", result)
    // fmt.Println(tax)  // Erreur : tax n'est pas accessible ici
}

La sortie affiche uniquement la valeur retournée :

Total: 22

La variable tax existe uniquement à l'intérieur de la fonction calculateTotal et ne peut pas être accédée depuis main.

challenge icon

Défi

Débutant

Dans ce défi, vous allez vous exercer à comprendre la portée des fonctions en Go. Vous devez corriger un programme simple qui présente un problème de portée.

Le programme possède une variable globale message et une fonction qui tente de la modifier. Votre tâche consiste à corriger le code afin que la fonction mette à jour correctement la variable globale.

Aide-mémoire

Les variables déclarées à l'intérieur d'une fonction ne sont accessibles qu'au sein de cette fonction (portée de fonction) :

func calculateTotal(price int, quantity int) int {
    tax := 0.1 * float64(price * quantity)  // variable locale
    total := price * quantity + int(tax)
    return total
}

func main() {
    result := calculateTotal(10, 2)
    fmt.Println("Total:", result)
    // fmt.Println(tax)  // Erreur : tax n'est pas accessible ici
}

Les variables locales n'existent qu'au sein de leur fonction et ne peuvent pas être consultées de l'extérieur.

Essayez vous-même

package main

import "fmt"

// Variable globale
var message string = "Hello from global scope"

func updateMessage() {
    // Ceci crée une nouvelle variable locale au lieu de modifier la variable globale
    message := "Hello from function scope"
    fmt.Println("Inside function:", message)
}

func main() {
    fmt.Println("Before function call:", message)
    updateMessage()
    
    // TODO: Le message global a toujours sa valeur d'origine
    // Modifier la fonction updateMessage() pour changer la variable globale
    fmt.Println("After function call:", 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