Sobes.tech
Junior — Middle

Ποιο είναι το πλήθος των στοιχείων και ποια θα είναι η χωρητικότητα ενός slice μετά την προσθήκη ενός στοιχείου, αν αρχικά δεν είχε αρχικοποιηθεί;

sobes.tech AI

Απάντηση από AI

Αν μια λωρίδα σε Go αρχικά δεν έχει αρχικοποιηθεί (δηλαδή, είναι ίση με nil), και την προσθέτετε ένα στοιχείο με τη χρήση της συνάρτησης append, τότε:

  • Ο αριθμός των στοιχείων (len) μετά την προσθήκη θα είναι 1.
  • Η χωρητικότητα (cap) θα εξαρτάται από την υλοποίηση, αλλά συνήθως ξεκινά με μια μικρή χωρητικότητα, π.χ. 1 ή 2.

Παράδειγμα:

var s []int // nil-λωρίδα
s = append(s, 10)
fmt.Println(len(s)) // 1
fmt.Println(cap(s)) // συνήθως >= 1

Έτσι, κατά την προσθήκη του πρώτου στοιχείου σε μια nil-λωρίδα σε Go, η Go αυτόματα διαθέτει μνήμη για μια νέα λωρίδα με επαρκή χωρητικότητα για να αποθηκεύσει αυτό το στοιχείο.