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]
}

Следователно, промените в елементите на среза се отразяват глобално, но промяната на самия срез — не.