/
Вопросы и ответы
/
Go
/

Как работает передача аргумента в go, по значению или по ссылке?

Как работает передача аргумента в go, по значению или по ссылке?

3 года назад

Ivan Gagarinov

Ответы

0

В Go все агрументы передаются по значению. Этот язык не поддерживает ссылочные переменные. Вместо этого в языке используются указатели, они хранят адрес в памяти. По этому адресу можно напрямую изменить данные. Некоторые типы данных, например Map и Slice, при создании возвращают такой указатель. Указатели во многом схожи с передачей по ссылке:

package main

import (
    "fmt"
)

func main() {
    m := map[string]int{}

    fillMap(m)

    fmt.Println(m) // map[random:1]
}

func fillMap(m map[string]int) {
    m["random"] = 1
}

3 года назад

Ivan Gagarinov

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845