Sobes.tech
Junior — Middle

Τι θα συμβεί με το μήκος και τη χωρητικότητα της λίστας αν προσθέσετε 10 στοιχεία σε αυτήν, όταν αρχικά είναι κενή;

sobes.tech AI

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

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

  • Το μήκος του slice θα γίνει 10 — ο αριθμός των στοιχείων που προσθέσατε.
  • Η χωρητικότητα του slice θα αυξηθεί αυτόματα, συνήθως με μια επιπλέον ποσότητα, για να αποφευχθούν συχνές ανακατανομές μνήμης. Η ακριβής χωρητικότητα εξαρτάται από την υλοποίηση, αλλά συχνά θα είναι 16 ή περισσότερο, ώστε να χωρέσει νέα στοιχεία και να έχει περιθώριο για μελλοντικές προσθήκες.

Παράδειγμα:

var s []int // κενό slice
s = append(s, make([]int, 10)...) // προσθέτουμε 10 στοιχεία
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, συνήθως 16 ή 20

Έτσι, η χωρητικότητα αυξάνεται δυναμικά, ώστε να διαχειρίζεται αποτελεσματικά τη μνήμη καθώς το slice μεγαλώνει.