Sobes.tech
Junior — Middle

Jak se předává slice do funkce v programovacím jazyce?

sobes.tech AI

Odpověď od AI

V jazyce Go je slice předáván funkci hodnotou, ale slice obsahuje ukazatel na pole, délku a kapacitu. To znamená, že při předání slice do funkce se kopíruje struktura slice, ale data pole, na které ukazuje, se nekopírují.

V důsledku toho se změny prvků slice uvnitř funkce odrážejí na původním poli, ale změna samotného slice (například přiřazení nového slice) neovlivní vnější slice.

Příklad:

package main
import "fmt"

func modifySlice(s []int) {
    s[0] = 100       // změní prvek původního pole
    s = append(s, 200) // změní lokální slice, vnější zůstane nezměněno
}

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

Tímto způsobem je slice předáván hodnotou, ale díky vnitřnímu ukazateli jsou změny prvků viditelné mimo funkci.