Middle+
Как се предават аргументите на функция — по стойност или по референция?
sobes.tech AI
Отговор от AI
В Go аргументите в функциите се предават по стойност. Това означава, че при извикване на функция, се предава копие на стойността към параметъра.
Обаче, ако се предаде указател (pointer), се копира стойността на указателя, който сочи към оригиналните данни. По този начин, може косвено да се променят данните, към които сочи указателят.
Пример:
func increment(val int) {
val++
}
func incrementPointer(val *int) {
(*val)++
}
func main() {
a := 5
increment(a) // a ще остане 5
incrementPointer(&a) // a ще стане 6
}
Обобщение: базовият тип се предава по стойност, но може да се предават указатели за промяна на оригиналните данни.