Junior — Middle
Jak przekazać slice do funkcji w języku programowania?
sobes.tech AI
Odpowiedź od AI
W języku Go, slices są przekazywane do funkcji przez wartość, ale slice zawiera wskaźnik na tablicę, a także jej długość i pojemność. Oznacza to, że podczas przekazywania slice do funkcji, kopiuje się struktura slice, ale nie dane tablicy, na którą wskazuje.
W związku z tym zmiany elementów slice wewnątrz funkcji odzwierciedlają się w oryginalnej tablicy, ale zmiana samego slice (np. przypisanie mu nowego slice) nie wpływa na zewnętrzny slice.
Przykład:
package main
import "fmt"
func modifySlice(s []int) {
s[0] = 100 // zmieni element oryginalnej tablicy
s = append(s, 200) // zmieni lokalny slice, zewnętrzny nie zostanie zmieniony
}
func main() {
s := []int{1, 2, 3}
modifySlice(s)
fmt.Println(s) // Wypisze: [100 2 3]
}
W ten sposób, slice jest przekazywany przez wartość, ale dzięki wewnętrznemu wskaźnikowi, zmiany elementów są widoczne poza funkcją.