Sobes.tech
Junior — Middle

Cum se transmit argumentele în funcțiile în limbajul Go?

sobes.tech AI

Răspuns de la AI

În limbajul Go, argumentele din funcții sunt transmise prin valoare. Aceasta înseamnă că, la apelarea unei funcții, se transmit copii ale valorilor argumentelor, iar modificările din interiorul funcției nu afectează variabilele originale.

Dacă trebuie să modifici valoarea unei variabile din codul apelant, se transmite un pointer către acea variabilă. Astfel, funcția primește adresa și poate modifica valoarea de la acea adresă.

Exemplu de transmitere prin valoare și prin pointer:

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) // Va afișa 5, deoarece a fost transmis prin valoare

    incrementByPointer(&a)
    fmt.Println(a) // Va afișa 6, deoarece a fost transmis ca pointer
}