Sobes.tech
Junior — Middle

Kan je het adres krijgen van een specifiek element dat in een associatieve tabel (Map) is opgeslagen?

sobes.tech AI

Antwoord van AI

In Go is het niet mogelijk om direct het adres van een specifiek element dat in een map is opgeslagen te krijgen. Dit komt doordat de elementen van de kaart tijdens wijzigingen in het geheugen kunnen bewegen, en de compiler staat niet toe dat je het adres van de waarde via indexering neemt om fouten te voorkomen.

Bijvoorbeeld, de volgende code compileert niet:

m := map[string]int{"a": 1}
p := &m["a"] // compileerfout: kan het adres van m["a"] niet nemen

Als je met het adres van de waarde moet werken, kun je pointers of structuren in de map opslaan en hun adres nemen:

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

Of de waarde uit de map kopiëren naar een variabele en het adres van die variabele nemen.