Sobes.tech
Junior — Middle

Meg lehet szerezni egy adott elem címét, amely egy asszociatív táblában (Map) van tárolva?

sobes.tech MI

Válasz az MI-től

Go nyelvben nem lehet közvetlenül megkapni egy map-ben tárolt konkrét elem címét. Ez azért van, mert a térkép elemei változtatások során mozgásban lehetnek a memóriában, és a fordító nem engedi a címének közvetlen megszerzését indexelésen keresztül, hogy elkerülje a hibákat.

Például a következő kód nem fog fordulni:

m := map[string]int{"a": 1}
p := &m["a"] // fordítási hiba: nem lehet megadni m["a"] címét

Ha a érték címével kell dolgoznia, akkor tárolhat mutatókat vagy struktúrákat a map-ben, és azok címét szerezheti meg:

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

Vagy másolja a értéket a map-ből egy változóba, és annak címét veheti.