Sobes.tech
Назад к вопросам
Junior — Middle
80

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

Компании, где спрашивали
AvitoAvito

Ответ от нейросети

sobes.tech 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, т.к. передан указатель
}