Junior — Middle
Czy zmiany wprowadzone na przesłanej liście będą wyświetlane globalnie w tym profilu?
sobes.tech AI
Odpowiedź od AI
W Go, jeśli przekażesz wycinek (slice) do funkcji i zmienisz jej elementy, te zmiany będą widoczne poza funkcją, ponieważ wycinek zawiera wskaźnik na dane tablicy.
Jednakże, jeśli wewnątrz funkcji zmienisz sam wycinek (np. przypisując mu nowy wycinek), nie wpłynie to na oryginalny wycinek poza funkcją.
Przykład:
func modifySlice(s []int) {
s[0] = 100 // zmieni element oryginalnego wycinka
s = append(s, 200) // zmieni lokalną kopię wycinka, nie wpływając na zewnętrzny
}
func main() {
slice := []int{1, 2, 3}
modifySlice(slice)
fmt.Println(slice) // Wypisze [100 2 3]
}
W związku z tym, zmiany elementów wycinka odzwierciedlają się globalnie, ale zmiana samego wycinka nie.