Sobes.tech
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. Χωρίς αυτό, η ενέργεια θα προκαλέσει σφάλμα κατά την εκτέλεση.