Junior — Middle
Πώς διακρίνουμε τους τρόπους δημιουργίας ενός slice στο Go με χρήση var, make και ανάθεση με δείκτες ή μέσω append;
sobes.tech AI
Απάντηση από AI
Στη Go, οι slices μπορούν να δημιουργηθούν με διάφορους τρόπους, που διαφέρουν στην αρχικοποίηση και την κατανομή μνήμης:
- Δήλωση με
var— δημιουργεί μια nil-slice, που δεν δείχνει σε κανένα πίνακα και έχει μήκος και χωρητικότητα 0.
var s []int // nil-slice
- Δημιουργία slice μέσω
make— καταχωρεί έναν πίνακα με το καθορισμένο μήκος και χωρητικότητα, και επιστρέφει μια slice που δείχνει σε αυτόν τον πίνακα.
s := make([]int, 5) // slice μήκους 5, γεμάτη με μηδενικά
-
Αντιστοίχιση με δείκτες — μόνο εφικτό αν η slice έχει ήδη αρχικοποιηθεί και έχει επαρκές μήκος.
-
Προσθήκη στοιχείων μέσω
append— προσθέτει στοιχεία στη slice, και αν χρειάζεται, αυξάνει τη χωρητικότητα και καταχωρεί νέο πίνακα.
s = append(s, 10) // προσθέτει το στοιχείο 10 στη slice
Έτσι, το var δημιουργεί μια άδεια nil-slice, το make μια slice με κατανεμημένη μνήμη, η αντιστοίχιση με δείκτες απαιτεί υπάρχον μήκος, και το append επεκτείνει δυναμικά τη slice.