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 μεγαλώνει.