Sobes.tech
Junior — Middle

Lehet-e módosítani a program futása közben a szeletként átadott tömb tartalmát?

sobes.tech MI

Válasz az MI-től

Igen, a tömb tartalma, amit szeletként adnak át, futás közben módosítható. A Go-ban a szelet egy olyan struktúra, amely egy mutatót tartalmaz egy tömbre, egy hosszúságot és egy kapacitást. A szelet elemeinek módosítása tükröződik az eredeti tömbben, mivel a szelet a tömb adataira mutat.

Példa:

package main
import "fmt"

func modifySlice(s []int) {
    s[0] = 100
}

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

Ezért a szelet módosítása az eredeti tömböt is módosítja.