Junior — Middle
Μπορείτε να προσθέσετε στοιχεία σε ένα slice που έχει περαστεί ως ορίσματα σε μια συνάρτηση;
sobes.tech AI
Απάντηση από AI
Ναι, είναι δυνατόν να προσθέσετε στοιχεία στη λίστα (slice) που περνάτε σε μια συνάρτηση, αλλά είναι σημαντικό να κατανοήσετε ότι σε Go, μια λίστα (slice) είναι μια δομή που περιέχει έναν δείκτη σε έναν πίνακα, μήκος και χωρητικότητα.
Αν στη συνάρτηση χρησιμοποιείτε append και αναθέτετε το αποτέλεσμα σε μια τοπική μεταβλητή, οι αλλαγές δεν θα επηρεάσουν τη αρχική λίστα εκτός της συνάρτησης, εκτός αν επιστρέψετε μια νέα λίστα ή περάσετε έναν δείκτη στη λίστα.
Παράδειγμα:
func addElement(s []int) []int {
s = append(s, 42) // προσθέτουμε ένα στοιχείο
return s
}
func main() {
s := []int{1, 2, 3}
s = addElement(s) // πρέπει να αναθέσετε ξανά
fmt.Println(s) // [1 2 3 42]
}
Αν θέλετε να τροποποιήσετε τη λίστα μέσα στη συνάρτηση χωρίς να την επιστρέψετε, μπορείτε να περάσετε έναν δείκτη:
func addElementPtr(s *[]int) {
*s = append(*s, 42)
}
func main() {
s := []int{1, 2, 3}
addElementPtr(&s)
fmt.Println(s) // [1 2 3 42]
}