Junior — Middle
Ποια είναι η διαφορά μεταξύ ενός χάρτη με μηδενική τιμή και μιας λίστας που περιέχει μηδενική τιμή;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, ένας χάρτης (map) με μηδενική τιμή είναι ένας χάρτης που δεν έχει αρχικοποιηθεί και είναι ίσος με το nil. Η προσπάθεια εγγραφής σε έναν τέτοιο χάρτη θα προκαλέσει panic.
Ένα slice με μηδενική τιμή είναι ένα nil-slice, που δεν δείχνει σε έναν πίνακα και έχει μήκος και χωρητικότητα 0. Μπορεί να χρησιμοποιηθεί με ασφάλεια, για παράδειγμα, για ανάγνωση ή μεταβίβαση σε συναρτήσεις.
Βασικές διαφορές:
- map == nil σημαίνει ότι ο χάρτης δεν έχει αρχικοποιηθεί και δεν μπορεί να δεχθεί στοιχεία.
- slice == nil σημαίνει ότι το slice είναι κενό και δεν δείχνει σε πίνακα, αλλά μπορεί να χρησιμοποιηθεί για ανάγνωση (θα είναι κενό) και μεταβίβαση.
Παράδειγμα:
var m map[string]int // m == nil
// m["key"] = 1 // panic: ανάθεση σε καταχώρηση σε nil χάρτη
var s []int // s == nil
fmt.Println(len(s)) // 0
s = append(s, 1) // τώρα το slice έχει αρχικοποιηθεί
Επομένως, ένας nil-χάρτης δεν είναι κατάλληλος για εγγραφή, και ένα nil-slice είναι ασφαλές για ανάγνωση και επέκταση.