Sobes.tech
Junior — Middle

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

sobes.tech AI

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

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

Για παράδειγμα:

var m map[string]int // m == nil
fmt.Println(m["key"]) // Θα εμφανίσει 0, δεν θα προκαλέσει σφάλμα

Ωστόσο, η προσπάθεια να αποδοθεί μια τιμή σε έναν nil χάρτη θα προκαλέσει panic:

m["key"] = 10 // panic: αποστολή σε καταχώρηση σε nil χάρτη

Επομένως, πριν γράψετε σε έναν χάρτη, πρέπει να βεβαιωθείτε ότι έχει αρχικοποιηθεί, για παράδειγμα:

m = make(map[string]int)
m["key"] = 10

Έτσι, για ανάγνωση, μπορείτε να προσεγγίσετε έναν nil χάρτη χωρίς σφάλματα, αλλά για εγγραφή, πρέπει να δημιουργήσετε τον χάρτη προηγουμένως.