Sobes.tech
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 που απλοποιεί τη δουλειά με δυναμικές συλλογές.