Sobes.tech
Junior — Middle

Hogyan történik a szelet átadása egy függvénynek egy programozási nyelvben?

sobes.tech MI

Válasz az MI-től

Go nyelvben a szelet (slice) érték szerint kerül átadásra egy függvénynek, de a szelet tartalmaz egy mutatót egy tömbre, valamint a hosszát és kapacitását. Ez azt jelenti, hogy a szelet átadásakor a szelet struktúrája másolódik, de a mutatott tömb adatai nem.

Ezért a függvényen belüli szelet elemeinek módosítása a eredeti tömbön tükröződik, de a szelet maga (pl. egy új szelet hozzárendelése) nem befolyásolja a külső szeletet.

Példa:

package main
import "fmt"

func modifySlice(s []int) {
    s[0] = 100       // módosítja az eredeti tömb elemet
    s = append(s, 200) // módosítja a helyi szeletet, a külső nem változik
}

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

Így a szelet érték szerint kerül átadásra, de a belső mutató miatt a módosítások láthatók a függvényen kívül is.