Sobes.tech
Junior — Middle

Ποια είναι η διαφορά μεταξύ των παραμέτρων μήκους και χωρητικότητας ενός πίνακα στον προγραμματισμό;

sobes.tech AI

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

Στη Go, οι πίνακες έχουν σταθερό μήκος που ορίζεται κατά τη δημιουργία τους και δεν μπορεί να αλλάξει. Ο παράμετρος μήκος (length) του πίνακα είναι ο αριθμός των στοιχείων που περιέχει, και είναι σταθερός.

Η χωρητικότητα (capacity) είναι ο αριθμός των στοιχείων που ένας πίνακας ή μια υπο-λίμα (slice) μπορεί να περιέχει χωρίς να κατανεμηθεί επιπλέον μνήμη. Για τους πίνακες, η χωρητικότητα είναι ίση με το μήκος, καθώς είναι σταθεροί. Για τις υπο-λίμες, η χωρητικότητα μπορεί να είναι μεγαλύτερη από το μήκος, καθώς οι υπο-λίμες είναι δυναμικές δομές που μπορούν να επεκταθούν.

Παράδειγμα:

arr := [5]int{1, 2, 3, 4, 5} // μήκος και χωρητικότητα 5

slice := arr[1:3]             // μήκος της υπο-λίμας 2 (στοιχεία με δείκτες 1 και 2)
// χωρητικότητα της υπο-λίμας 4 (από τον δείκτη 1 μέχρι το τέλος του πίνακα)

fmt.Println(len(slice)) // 2
fmt.Println(cap(slice)) // 4

Επομένως, το μήκος είναι το τρέχον μέγεθος (αριθμός στοιχείων), και η χωρητικότητα είναι το μέγιστο μέγεθος χωρίς ανακατανομή μνήμης.