Junior — Middle
Ar galima gauti tam tikro elemento, saugomo asociatyvioje lentelėje (Map), adresą?
sobes.tech AI
Atsakymas iš AI
Go kalboje nėra galima tiesiogiai gauti konkretaus elemento, saugomo map viduje, adresą. Tai susiję su tuo, kad žemėlapio elementai gali judėti atmintyje keičiantis, ir kompiliatorius neleidžia paimti reikšmės adreso per indeksavimą, siekiant išvengti klaidų.
Pavyzdžiui, šis kodas nesukompiliuos:
m := map[string]int{"a": 1}
p := &m["a"] // klaida: negalima paimti m["a"] adreso
Jei reikia dirbti su reikšmės adresu, galite saugoti nuorodas arba struktūras map ir paimti jų adresą:
m := map[string]*int{"a": new(int)}
*m["a"] = 42
Arba nukopijuoti reikšmę iš map į kintamąjį ir paimti jos adresą.