Sobes.tech
Junior — Middle

Как се осъществява предаването на аргументи във функциите в езика Go?

sobes.tech AI

Отговор от AI

В езика Go аргументите в функциите се предават по стойност. Това означава, че при извикване на функция, се предават копия на стойностите на аргументите, и промените вътре във функцията не влияят на оригиналните променливи.

Ако трябва да промените стойността на променлива от кода, който я извиква, се предава указател към тази променлива. Тогава функцията получава адреса и може да промени стойността на този адрес.

Пример за предаване по стойност и по указател:

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) // Ще изведе 5, тъй като е предадено по стойност

    incrementByPointer(&a)
    fmt.Println(a) // Ще изведе 6, тъй като е предадено като указател
}