Junior — Middle
Οι αλλαγές που έγιναν στη δοθείσα λίστα θα εμφανίζονται παγκοσμίως σε αυτό το προφίλ;
sobes.tech AI
Απάντηση από AI
Στη Go, αν περάσετε μια υπο-λίστα (slice) σε μια συνάρτηση και τροποποιήσετε τα στοιχεία της, αυτές οι αλλαγές θα φανούν εκτός της συνάρτησης, καθώς η υπο-λίστα περιέχει έναν δείκτη στα δεδομένα του πίνακα.
Ωστόσο, αν μέσα στη συνάρτηση αλλάξετε την ίδια τη υπο-λίστα (π.χ., της αναθέσετε μια νέα υπο-λίστα), αυτό δεν θα επηρεάσει την αρχική υπο-λίστα εκτός της συνάρτησης.
Παράδειγμα:
func modifySlice(s []int) {
s[0] = 100 // θα αλλάξει το στοιχείο της αρχικής υπο-λίστας
s = append(s, 200) // θα αλλάξει το τοπικό αντίγραφο της υπο-λίστας, όχι το εξωτερικό
}
func main() {
slice := []int{1, 2, 3}
modifySlice(slice)
fmt.Println(slice) // Θα εκτυπώσει [100 2 3]
}
Έτσι, οι αλλαγές στα στοιχεία της υπο-λίστας αντικατοπτρίζονται παγκοσμίως, αλλά η αλλαγή της ίδιας της υπο-λίστας όχι.