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]
}
Следователно, промените в елементите на среза се отразяват глобално, но промяната на самия срез — не.