Junior — Middle
Budú zmeny vykonané v odoslanej zozname zobrazené globálne v tomto profile?
sobes.tech AI
Odpoveď od AI
V jazyku Go, ak odovzdáte rez (slice) do funkcie a zmeníte jeho prvky, tieto zmeny budú viditeľné mimo funkcie, pretože rez obsahuje ukazovateľ na dáta v poli.
Avšak, ak vo vnútri funkcie zmeníte samotný rez (napríklad mu priradíte nový rez), nebude to mať vplyv na pôvodný rez mimo funkcie.
Príklad:
func modifySlice(s []int) {
s[0] = 100 // zmení prvok pôvodného rezu
s = append(s, 200) // zmení lokálnu kópiu rezu, neovplyvní ten vonkajší
}
func main() {
slice := []int{1, 2, 3}
modifySlice(slice)
fmt.Println(slice) // Vytlačí [100 2 3]
}
Teda, zmeny na prvkoch rezu sa odrážajú globálne, ale zmena samotného rezu — nie.