Sobes.tech
Junior — Middle

Ποιες ενέργειες επιτρέπονται με μια μεταβλητή τύπου Map που δεν έχει ακόμη αρχικοποιηθεί;

sobes.tech AI

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

Στη Go, μια μεταβλητή τύπου map έχει προεπιλεγμένη τιμή nil αν δεν έχει αρχικοποιηθεί.

Με ένα map nil, επιτρέπονται οι ακόλουθες ενέργειες:

  • Ανάγνωση τιμής με βάση το κλειδί — θα επιστρέψει την τιμή μηδέν του τύπου και μια ένδειξη απουσίας του κλειδιού.
  • Έλεγχος ύπαρξης κλειδιού με value, ok := map[key].

Οι μη επιτρεπτές ενέργειες:

  • Η εγγραφή (ανάθεση τιμής σε κλειδί) θα προκαλέσει panic.
  • Η κλήση συναρτήσεων που τροποποιούν το χάρτη (π.χ. delete) σε ένα map nil είναι ασφαλής και δεν προκαλεί 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 // τώρα λειτουργεί