Sobes.tech
Junior — Middle

Jak odbywa się przekazywanie argumentów do funkcji w języku Go?

sobes.tech AI

Odpowiedź od AI

W języku Go argumenty w funkcjach są przekazywane przez wartość. Oznacza to, że podczas wywołania funkcji przekazywane są kopie wartości argumentów, a zmiany wewnątrz funkcji nie wpływają na oryginalne zmienne.

Jeśli chcesz zmienić wartość zmiennej z kodu wywołującego, przekazuje się wskaźnik na tę zmienną. Wtedy funkcja otrzymuje adres i może zmienić wartość pod tym adresem.

Przykład przekazywania przez wartość i przez wskaźnik:

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) // Wypisze 5, bo przekazano przez wartość

    incrementByPointer(&a)
    fmt.Println(a) // Wypisze 6, bo przekazano wskaźnik
}