Sobes.tech
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]
}

Έτσι, οι αλλαγές στα στοιχεία της υπο-λίστας αντικατοπτρίζονται παγκοσμίως, αλλά η αλλαγή της ίδιας της υπο-λίστας όχι.