Sobes.tech
Junior — Middle

Comment la transmission des arguments se fait-elle dans les fonctions en langage Go?

sobes.tech IA

Réponse de l'IA

Dans le langage Go, les arguments dans les fonctions sont passés par valeur. Cela signifie qu’à l’appel d’une fonction, des copies des valeurs des arguments sont passées, et les modifications à l’intérieur de la fonction n’affectent pas les variables originales.

Si vous souhaitez modifier la valeur d’une variable depuis le code appelant, vous passez un pointeur vers cette variable. La fonction reçoit alors l’adresse et peut modifier la valeur à cette adresse.

Exemple de passage par valeur et par pointeur :

package main
import "fmt"

func incrementByValue(x int) {
    x = x + 1
}

func incrementByPointer(x *int) {
    *x = *x + 1
}

func main() {
    a := 5
    incrementByValue(a)
    fmt.Println(a) // Affichera 5, car passé par valeur

    incrementByPointer(&a)
    fmt.Println(a) // Affichera 6, car passé par pointeur
}