Sobes.tech
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 // τώρα λειτουργεί σωστά