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

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

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

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

sobes.tech AI

В языке Go аргументы в функции передаются по значению, то есть копируются при вызове. Это означает, что изменения параметров внутри функции не влияют на переменные, переданные в неё, если только не передать указатель.

Пример передачи по значению:

func increment(x int) {
    x = x + 1
}

func main() {
    a := 5
    increment(a)
    fmt.Println(a) // Выведет 5, т.к. a не изменился
}

Если нужно изменить значение переменной из вызывающего кода, передают указатель:

func incrementPtr(x *int) {
    *x = *x + 1
}

func main() {
    a := 5
    incrementPtr(&a)
    fmt.Println(a) // Выведет 6
}

Таким образом, Go использует передачу по значению, но с помощью указателей можно добиться передачи по ссылке.