Sobes.tech
Junior — Middle

Μπορεί κανείς να πάρει τη διεύθυνση ενός συγκεκριμένου στοιχείου που αποθηκεύεται σε έναν συσχετιστικό πίνακα (Map);

sobes.tech AI

Απάντηση από AI

Στη γλώσσα Go, δεν είναι δυνατή η άμεση λήψη της διεύθυνσης ενός συγκεκριμένου στοιχείου που αποθηκεύεται σε ένα map. Αυτό συμβαίνει επειδή τα στοιχεία του χάρτη μπορούν να μετακινηθούν στη μνήμη κατά τις αλλαγές, και ο μεταγλωττιστής δεν επιτρέπει τη λήψη της διεύθυνσης της τιμής μέσω ευρετηρίασης για την αποφυγή σφαλμάτων.

Για παράδειγμα, ο ακόλουθος κώδικας δεν θα μεταγλωττιστεί:

m := map[string]int{"a": 1}
p := &m["a"] // σφάλμα μεταγλώττισης: δεν μπορεί να πάρει τη διεύθυνση του m["a"]

Εάν χρειάζεται να εργαστείτε με τη διεύθυνση της τιμής, μπορείτε να αποθηκεύσετε δείκτες ή δομές στο map και να πάρει τη διεύθυνσή τους:

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

Ή να αντιγράψετε την τιμή από το map σε μια μεταβλητή και να πάρετε τη διεύθυνσή της.