Sobes.tech
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ą.