Junior — Middle
Μπορεί να εξαχθεί μια τιμή από έναν χάρτη που δεν έχει ακόμη αρχικοποιηθεί;
sobes.tech AI
Απάντηση από AI
Στο Go, αν ένας χάρτης (map) δεν έχει αρχικοποιηθεί (δηλαδή, είναι ίσος με nil), η προσπάθεια να αντλήσετε μια τιμή με βάση ένα κλειδί δεν θα προκαλέσει panic, αλλά θα επιστρέψει απλώς την τιμή μηδέν για τον τύπο της τιμής και μια σημαία boolean false, που υποδεικνύει ότι το κλειδί απουσιάζει.
Παράδειγμα:
var m map[string]int // m == nil
value, ok := m["key"]
fmt.Println(value, ok) // Θα εμφανίσει: 0 false
Ωστόσο, αν προσπαθήσετε να γράψετε μια τιμή σε έναν μη αρχικοποιημένο χάρτη, θα προκληθεί panic:
m["key"] = 10 // panic: assignment to entry in nil map
Γι' αυτό, για ασφαλή χρήση του χάρτη, πρέπει να τον αρχικοποιήσετε, για παράδειγμα, με make:
m = make(map[string]int)
m["key"] = 10 // τώρα λειτουργεί σωστά