Sobes.tech
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ą.