Junior — Middle
Ποια είναι τα αποτελέσματα κατά τη χρήση της μεθόδου append για ένα slice που έχει δηλωθεί χωρίς αρχικές παραμέτρους;
sobes.tech AI
Απάντηση από AI
Αν μια λίμα σε Go δηλωθεί χωρίς αρχικές παραμέτρους, για παράδειγμα var s []int, αρχικά είναι ίση με nil και δεν δείχνει σε κατανεμημένο πίνακα. Όταν χρησιμοποιείτε τη λειτουργία append, το Go αυτόματα θα κατανεμηθεί ένας νέος πίνακας και θα προστεθούν τα στοιχεία, επιστρέφοντας μια νέα λίμα με την απαραίτητη χωρητικότητα.
Αυτό σημαίνει ότι το append λειτουργεί με ασφάλεια με nil-λίμες, και μπορείτε να γράψετε:
var s []int // nil-λίμα
s = append(s, 1, 2, 3) // τώρα το s δείχνει σε έναν νέο πίνακα με τα στοιχεία
Συνέπειες:
- Δεν είναι απαραίτητο να αρχικοποιήσετε τη λίμα πριν από τη χρήση του
append. - Κατά την πρώτη κλήση του
append, γίνεται κατανομή μνήμης. - Αν η λίμα είναι nil, τότε
len(s) == 0καιcap(s) == 0.
Ως εκ τούτου, η χρήση του append με nil-λίμες είναι μια τυπική πρακτική σε Go που απλοποιεί τη δουλειά με δυναμικές συλλογές.