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

Аватар пользователя Ivan Gagarinov
Ivan Gagarinov
09 января 2023

В 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
}
0 0
Познакомьтесь с основами Go бесплатно