Junior — Middle
Σε ποιες περιπτώσεις επιτρέπεται να εκτελέσετε μια λειτουργία εισαγωγής σε ένα Map που δεν έχει ακόμη αρχικοποιηθεί;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, δεν μπορείτε να εκτελέσετε μια ενέργεια εισαγωγής σε ένα map αν αυτό δεν έχει αρχικοποιηθεί (δηλαδή, αν είναι nil), καθώς αυτό θα οδηγήσει σε panic κατά την εκτέλεση.
Η αρχικοποίηση του map γίνεται με τη χρήση της συνάρτησης make:
m := make(map[string]int)
ms["key"] = 42 // σωστό
Αν το map είναι nil, μια προσπάθεια εγγραφής θα προκαλέσει panic:
var m map[string]int
m["key"] = 42 // panic: ανάθεση σε μη αρχικοποιημένο map
Εξαίρεση:
- Αν το
mapέχει δηλωθεί αλλά δεν έχει αρχικοποιηθεί, μπορεί να αρχικοποιηθεί άμεσα πριν από την εισαγωγή. - Μερικές φορές, το
mapμπορεί να αρχικοποιηθεί σε κατασκευαστή ή συνάρτηση και να μεταβιβαστεί περαιτέρω.
Επομένως, η εισαγωγή σε ένα μη αρχικοποιημένο map επιτρέπεται μόνο μετά την ρητή αρχικοποίησή του μέσω make ή την ανάθεση ήδη υπάρχοντος και αρχικοποιημένου map. Χωρίς αυτό, η ενέργεια θα προκαλέσει σφάλμα κατά την εκτέλεση.