/
Вопросы и ответы
/
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