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.