Sobes.tech
Junior — Middle

Czy można uzyskać adres konkretnego elementu przechowywanego w tabeli asocjacyjnej (Map)?

sobes.tech AI

Odpowiedź od AI

W języku Go nie można bezpośrednio uzyskać adresu konkretnego elementu przechowywanego w mapie. Wynika to z faktu, że elementy mapy mogą się przesuwać w pamięci podczas zmian, a kompilator nie pozwala na pobieranie adresu wartości przez indeksowanie, aby uniknąć błędów.

Na przykład, poniższy kod nie zostanie skompilowany:

m := map[string]int{"a": 1}
p := &m["a"] // błąd kompilacji: nie można wziąć adresu m["a"]

Jeśli musisz pracować z adresem wartości, możesz przechowywać wskaźniki lub struktury w mapie i brać ich adres:

m := map[string]*int{"a": new(int)}
*m["a"] = 42

Lub skopiować wartość z mapy do zmiennej i brać jej adres.