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, тъй като е предадено като указател
}