Senior
Τι είναι ένα slice και πώς διαφέρει από έναν πίνακα;
sobes.tech AI
Απάντηση από AI
Στη γλώσσα Go, ένας πίνακας (array) είναι μια δομή με σταθερό μέγεθος που περιέχει στοιχεία του ίδιου τύπου. Το μέγεθος του πίνακα ορίζεται κατά την δήλωση και δεν μπορεί να αλλάξει κατά τη διάρκεια εκτέλεσης του προγράμματος.
Το Slice είναι ένα δυναμικό, μεταβλητό τμήμα του πίνακα. Είναι μια δομή που περιέχει έναν δείκτη στον πίνακα, το μήκος και τη χωρητικότητα. Τα slices επιτρέπουν εργασία με υποσύνολα του πίνακα και επεκτείνονται αυτόματα όταν χρειάζεται.
Βασικές διαφορές:
- Μέγεθος: ο πίνακας έχει σταθερό μέγεθος, το slice είναι δυναμικό.
- Μεταβίβαση: οι πίνακες περνούνται με τιμή (αντιγραφή), τα slices με αναφορά (δείκτη στον πίνακα).
- Ευελιξία: το slice μπορεί να επεκταθεί με τη χρήση της συνάρτησης
append, ο πίνακας όχι.
Παράδειγμα:
var arr [3]int = [3]int{1, 2, 3} // σταθερού μεγέθους πίνακας
var s []int = arr[0:2] // slice που αναφέρεται σε μέρος του πίνακα
s = append(s, 4) // το slice επεκτείνεται, και αν χρειάζεται, δημιουργείται νέος πίνακας