Sobes.tech
Junior — Middle

Kako se prosleđuje slice u funkciju u programskom jeziku?

sobes.tech АИ

Одговор од АИ

U jeziku Go, slice se prosleđuje funkciji po vrednosti, ali slice sadrži pokazivač na niz, kao i njegovu dužinu i kapacitet. To znači da se prilikom prosleđivanja slice-a funkciji kopira struktura slice-a, ali ne i podaci niza na koji on ukazuje.

Zbog toga, izmene elemenata slice-a unutar funkcije odražavaju se na originalni niz, ali promena samog slice-a (npr. dodeljivanjem novog slice-a) ne utiče na spoljašnji slice.

Primer:

package main
import "fmt"

func modifySlice(s []int) {
    s[0] = 100       // menja element originalnog niza
    s = append(s, 200) // menja lokalni slice, spoljašnji ne menja
}

func main() {
    s := []int{1, 2, 3}
    modifySlice(s)
    fmt.Println(s) // Ispisaće: [100 2 3]
}

Na ovaj način, slice se prosleđuje po vrednosti, ali zahvaljujući unutrašnjem pokazivaču, izmene elemenata su vidljive izvan funkcije.