Sobes.tech
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 είναι ασφαλές για ανάγνωση και επέκταση.