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.