Sobes.tech
Junior — Middle

Milyen értéke van egy hivatkozásnak vagy mutatónak egy olyan szerkezeten belül, amely egy szeletet használ egy programozási nyelvben?

sobes.tech MI

Válasz az MI-től

Go nyelvben a szelet (slice) egy olyan struktúra, amely egy mutatót tartalmaz egy tömbre, valamint hosszúságot és kapacitást. Amikor egy szeletet egy struktúrában használunk, maga a szelet értékként van tárolva, de belül van egy mutató a tömb adataira.

Ez azt jelenti, hogy a struktúra másolásakor a szelet is másolódik, de mindkét szelet ugyanarra a tömbre mutat. A változtatások az egyik szeletben megjelennek a másikban is, ha ugyanarra a tömbre mutatnak.

Példa:

package main
import "fmt"

type MyStruct struct {
    Data []int
}

func main() {
    s1 := MyStruct{Data: []int{1, 2, 3}}
    s2 := s1 // struktúra másolása
    s2.Data[0] = 100
    fmt.Println(s1.Data) // [100 2 3] lesz, mivel a Data ugyanarra a tömbre mutat
}

Ezért a struktúrában lévő szelet referencia egy közös tömbre mutat, amit figyelembe kell venni a másolás és módosítás során.