Junior — Middle
Ποιες ενέργειες επιτρέπονται με μια μεταβλητή τύπου Map που δεν έχει ακόμη αρχικοποιηθεί;
sobes.tech AI
Απάντηση από AI
Στη Go, μια μεταβλητή τύπου map έχει προεπιλεγμένη τιμή nil αν δεν έχει αρχικοποιηθεί.
Με ένα map nil, επιτρέπονται οι ακόλουθες ενέργειες:
- Ανάγνωση τιμής με βάση το κλειδί — θα επιστρέψει την τιμή μηδέν του τύπου και μια ένδειξη απουσίας του κλειδιού.
- Έλεγχος ύπαρξης κλειδιού με
value, ok := map[key].
Οι μη επιτρεπτές ενέργειες:
- Η εγγραφή (ανάθεση τιμής σε κλειδί) θα προκαλέσει panic.
- Η κλήση συναρτήσεων που τροποποιούν το χάρτη (π.χ.
delete) σε έναmapnilείναι ασφαλής και δεν προκαλεί panic.
Παράδειγμα:
var m map[string]int // m == nil
v, ok := m["key"] // ok == false, v == 0
// m["key"] = 10 // panic: ανάθεση σε μηδενικό χάρτη
delete(m, "key") // ασφαλές, δεν κάνει τίποτα
Για να χρησιμοποιήσετε έναν χάρτη για εγγραφή, πρέπει να τον αρχικοποιήσετε, π.χ. με make:
m = make(map[string]int)
m["key"] = 10 // τώρα λειτουργεί